nombre - obtener archivos de un directorio c#
¿Cómo enumerar el contenido del directorio con FTP en C#? (7)
Algunos proxies vuelven a formatear la lista de directorios, por lo que es bastante difícil analizar una lista de directorios de manera confiable a menos que pueda garantizar que el proxy no cambie.
¿Cómo enumerar el contenido del directorio con FTP en C #?
Estoy usando el código a continuación para mostrar el contenido del directorio con FTP, está devolviendo el resultado en formato XML, pero solo quiero el nombre del directorio y no el contenido completo.
Como puedo hacer eso ?
public class WebRequestGetExample
{
public static void Main ()
{
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","[email protected]");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
Console.WriteLine(reader.ReadToEnd());
Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription);
reader.Close();
response.Close();
}
}
Hay un método GetDirectoryInformation () en el siguiente enlace que busca archivos y directorios recursivamente desde un directorio FTP.
La manera más simple y eficiente de obtener contenido del directorio FTP:
var contents = GetFtpDirectoryContents (new Uri ("ftpDirectoryUri"), nuevo NetworkCredential ("userName", "password"));
public static List<string> GetFtpDirectoryContents(Uri requestUri, NetworkCredential networkCredential)
{
var directoryContents = new List<string>(); //Create empty list to fill it later.
//Create ftpWebRequest object with given options to get the Directory Contents.
var ftpWebRequest = GetFtpWebRequest(requestUri, networkCredential, WebRequestMethods.Ftp.ListDirectory);
try
{
using (var ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse()) //Excute the ftpWebRequest and Get It''s Response.
using (var streamReader = new StreamReader(ftpWebResponse.GetResponseStream())) //Get list of the Directory Contentss as Stream.
{
var line = string.Empty; //Initial default value for line.
do
{
line = streamReader.ReadLine(); //Read current line of Stream.
directoryContents.Add(line); //Add current line to Directory Contentss List.
} while (!string.IsNullOrEmpty(line)); //Keep reading while the line has value.
}
}
catch (Exception) { } //Do nothing incase of Exception occurred.
return directoryContents; //Return all list of Directory Contentss: Files/Sub Directories.
}
public static FtpWebRequest GetFtpWebRequest(Uri requestUri, NetworkCredential networkCredential, string method = null)
{
var ftpWebRequest = (FtpWebRequest)WebRequest.Create(requestUri); //Create FtpWebRequest with given Request Uri.
ftpWebRequest.Credentials = networkCredential; //Set the Credentials of current FtpWebRequest.
if (!string.IsNullOrEmpty(method))
ftpWebRequest.Method = method; //Set the Method of FtpWebRequest incase it has a value.
return ftpWebRequest; //Return the configured FtpWebRequest.
}
Necesita ListDirectory que enumera los contenidos del directorio
EDITAR: O puede usar esta biblioteca Chilkat que lo envuelve muy bien para usted
Probablemente estés buscando PrintWorkingDirectory
Prueba esto:
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
ftpRequest.Credentials =new NetworkCredential("anonymous","[email protected]");
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
streamReader.Close();
Me dio una lista de directorios ... todos listados en la lista de cadenas de directorios ... dime si eso es lo que necesitas
Si desea listar el nombre de los archivos que están dentro del directorio, debe poner (reqFTP.Proxy = null;) antes de invocar (reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;).
¡Espero que esto le pueda ayudar!