@uuuu

Как докачать файл?

Можно ли с помощью WebClient (DownloadFileAsync) скачать один файл по одной ссылке, и потом скачать другой файл по другой ссылке, но сохранять данные в первый скачанный файл?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
Первое, что пришло в голову.
byte[] buffer1 = await webClient.DownloadDataTaskAsync(firstUrl);
byte[] buffer2 = await webClient.DownloadDataTaskAsync(secondUrl);

using (FileStream stream = new FileStream("file.data", FileMode.Create))
{
    stream.Write(buffer1, 0, buffer1.Length);
    stream.Write(buffer2, 0, buffer2.Length);
}


Так же на просторах stackoverflow можно найти более производительные по памяти решения, когда через DownloadFileAsync уже два файла скачали, их обьединить:
string[] urls = { /* URL адреса файлов */ };
string[] filesNames = { /* имена файлов */ };

// параллельно скачиваем файлы
await Task.WhenAll(urls.Select((url, i) => webClient.DownloadFileTaskAsync(url, filesNames[i])));

// открываем на запись первый файл
using (Stream resultFileStream = File.OpenWrite(filesNames[0]))
{
    // открываем на чтение второй файл
    using (Stream fileStream = File.OpenRead(filesNames[1]))
    {
        // копируем поток байтов из второго файла в первый
        fileStream.CopyTo(resultFileStream);
    }
}

// удаляем второй файл
File.Delete(filesNames[1]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы