web-dev-qa-db-fra.com

Liste des commentaires contenu du répertoire avec FTP en C #?

Comment lister le contenu du répertoire avec FTP en C #?

J'utilise le code ci-dessous pour lister le contenu du répertoire avec FTP, il renvoie le résultat au format XML, mais je ne veux que le nom du répertoire, pas le contenu entier.

Comment je peux faire ça?

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();
    }
}

MSDN

38
Swapnil Gupta

Essaye ça:

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();

Il m'a donné une liste de répertoires ... tous listés dans la liste des chaînes de répertoires ... dites-moi si c'est ce dont vous aviez besoin

55
mint

Vous recherchez probablement PrintWorkingDirectory

1
leppie

Certains proxys reformatant la liste des répertoires, il est donc assez difficile d'analyser une liste de répertoires de manière fiable à moins de pouvoir garantir que le proxy ne change pas

1
Konektiv

Vous avez besoin de ListDirectory qui répertorie le contenu du répertoire

EDIT: Ou vous pouvez utiliser cette bibliothèque Chilkat

1
w69rdy

Le moyen le plus simple et le plus efficace d’obtenir le contenu du répertoire FTP:

var contents = GetFtpDirectoryContents (nouvel Uri ("ftpDirectoryUri"), nouveau NetworkCredential ("nomutilisateur", "mot de passe"));

    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.
    }
0
Ahmed Sabry

Il existe une méthode GetDirectoryInformation () dans le lien suivant qui récupère les fichiers et les répertoires de manière récursive à partir d'un répertoire FTP.

Récupération récursive des fichiers du répertoire FTP

0
Pabitra Dash