Si el archivo es pequeño, la forma más fácil es usar WebClient.DownloadData
:
WebClient client = new WebClient();
string url = "ftp://ftp.example.com/remote/path/file.zip";
client.Credentials = new NetworkCredential("username", "password");
byte[] contents = client.DownloadData(url);
Si el archivo es un archivo de texto, utilice WebClient.DownloadString
:
string contents = client.DownloadString(url);
Se supone que el contenido del archivo se encuentra en codificación UTF-8 (un archivo ASCII hará también). Si necesita utilizar una codificación diferente, use WebClient.Encoding
property.
Si el archivo es grande, por lo que es necesario procesarlo en trozos, en lugar de cargar a toda la memoria, utilice FtpWebRequest
:
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.DownloadFile;
using (Stream stream = request.GetResponse().GetResponseStream())
{
byte[] buffer = new byte[10240];
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
// process the chunk in "buffer"
}
}
Si el archivo de gran tamaño es una archivo de texto y desea procesarlo por líneas, en lugar de por trozos de un tamaño fijo, utilice StreamReader
:
FtpWebRequest request =
(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/file.txt");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.DownloadFile;
using (Stream stream = request.GetResponse().GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
// process the line
Console.WriteLine(line);
}
}
Nuevamente, esto supone la codificación UTF-8. Si desea utilizar otra codificación, use un overload of StreamReader
contructor that takes also Encoding
.
Cómo no funciona, qué errores está recibiendo. ¿Puedes imprimir más depuración? – ColWhi
¿Puede describir de qué manera no funciona (incluidos los detalles de la excepción, si corresponde)? –
Sin saber el error, es difícil de aconsejar. ¿Pero está devolviendo una cadena vacía en este ejemplo? –