Ho scaricato file da un server FTP tramite l'oggetto WebClient
fornito dallo spazio dei nomi .NET
e quindi i byte in un file reale tramite BinaryWriter
. Va tutto bene. Tuttavia, ora i file sono notevolmente aumentati di dimensioni e sono preoccupato per i vincoli di memoria, quindi mi piacerebbe creare un flusso di download, creare un flusso di file e leggere riga per riga dal download e scrivere sul file.C# Webclient Stream scarica il file da FTP nella memoria locale
Sono nervoso perché non riuscivo a trovare un buon esempio di questo. Ecco il mio risultato finale:
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());
}
}
}
Sto andando in questo modo errato/migliore/etc?
Sì, e lo sono ancora (l'oggetto di richiesta è un WebClient [I' m aggiorna il mio post per mostrarlo esplicitamente]) ma DownladFile mi darà l'intero file in memoria - l'opposto di quello che sto cercando .. – OnResolve
@OnResolve, mi dispiace, non l'ho menzionato. Si prega di consultare l'aggiornamento. –
@OnResolve, ho aggiunto la versione con la dimensione del buffer personalizzata. –