Maison >développement back-end >C++ >Comment analyser efficacement les listes de répertoires FTP en C# ?

Comment analyser efficacement les listes de répertoires FTP en C# ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 13:48:14983parcourir

How to Efficiently Parse FTP Directory Listings in C#?

Analyse de la réponse FTP de WebRequestMethods.Ftp.ListDirectoryDetails en C#

La méthode FtpWebRequest.ListDirectoryDetails permet de récupérer des informations détaillées sur les fichiers et répertoires dans un serveur FTP. Cependant, l'analyse de la réponse de cette méthode peut être difficile en raison des différents formats utilisés par les différents serveurs FTP.

Analyse personnalisée pour différents formats de réponse

Pour analyser la réponse de manière transparente, une classe C# personnalisée peut être créée pour gérer les différents formats. Par exemple :

string pattern = @"\s+(\d+)(\w+)(\s+|\s*\d+[^ ].+)(.*)";
Regex regex = new Regex(pattern);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/");
request.Credentials = new NetworkCredential("user", "password");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());

while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);

    if (match.Success)
    {
        string fileName = match.Groups[4].Value.Trim();
        long size = long.Parse(match.Groups[1].Value);
        string lastModified = match.Groups[2].Value + " " + match.Groups[3].Value;
        bool isDirectory = match.Groups[1].Value.StartsWith("d");

        Console.WriteLine("{0}\t{1}\t{2}", fileName, lastModified, size);
    }
}

Utilisation d'un client FTP moderne avec une réponse lisible par machine

Cependant, il est recommandé d'utiliser un client FTP prenant en charge la commande MLSD, qui renvoie les listes de répertoires dans un format lisible par machine. L'analyse de la réponse de la commande LIST lisible par l'homme devrait être un dernier recours pour les serveurs obsolètes qui ne prennent pas en charge MLSD.

Les bibliothèques tierces telles que WinSCP .NET offrent une fonctionnalité client FTP avec prise en charge de MLSD et de divers éléments lisibles par l'homme. formats de liste. Cela simplifie le processus d'analyse des listes de répertoires FTP.

Avantages de l'utilisation d'une bibliothèque tierce

  • Analyse fiable : Analyse MLSD les réponses et divers formats de commandes LIST sont gérés de manière transparente.
  • Détails détaillés : Les réponses MLSD lisibles par machine fournissent des informations détaillées telles que les autorisations de fichier, le groupe et le propriétaire.
  • Retour à la commande LIST : Si MLSD n'est pas pris en charge, les bibliothèques peuvent utiliser la commande LIST et convertir la réponse dans un format cohérent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn