C# Webclient Stream скачать файл с FTP на локальное хранилище
я загружал файлы с FTP-сервера через WebClient
объект .NET
пространство имен, а затем писать байты в файл с помощью BinaryWriter
. Все хорошо. Однако теперь файлы резко увеличились в размере, и я беспокоюсь о ограничениях памяти, поэтому я хотел бы создать поток загрузки, создать поток файлов и строка за строкой читать из загрузки и записи в файл.
Я нервничаю, так как я не мог найти хороший пример этого. Вот мой конечный результат:
var request = new WebClient();
// Omitted code to add credentials, etc..
var downloadStream = new StreamReader(request.OpenRead(ftpFilePathUri.ToString()));
using (var writeStream = File.Open(toLocation, FileMode.CreateNew))
{
using (var writer = new StreamWriter(writeStream))
{
while (!downloadStream.EndOfStream)
{
writer.Write(downloadStream.ReadLine());
}
}
}
Я иду об этом неправильном / лучшем пути / etc?
1 ответов
вы пробовали следующее использование WebClient
класса?
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile("url", "filePath");
}
обновление
using (var client = new WebClient())
using (var stream = client.OpenRead("..."))
using (var file = File.Create("..."))
{
stream.CopyTo(file);
}
если вы хотите загрузить файл явно, используя настроенный размер буфера:
public static void DownloadFile(Uri address, string filePath)
{
using (var client = new WebClient())
using (var stream = client.OpenRead(address))
using (var file = File.Create(filePath))
{
var buffer = new byte[4096];
int bytesReceived;
while ((bytesReceived = stream.Read(buffer, 0, buffer.Length)) != 0)
{
file.Write(buffer, 0, bytesReceived);
}
}
}