Maison > développement back-end > C++ > Comment puis-je analyser de manière fiable les listes de répertoires FTP à format variable en C# ?

Comment puis-je analyser de manière fiable les listes de répertoires FTP à format variable en C# ?

Patricia Arquette
Libérer: 2024-12-28 20:22:21
original
890 Les gens l'ont consulté

How Can I Reliably Parse Variably Formatted FTP Directory Listings in C#?

Analyse des réponses FTP pour la liste des répertoires avec des formats variables à l'aide de C#

Énoncé du problème :

Lors du développement d'un service pour surveiller les emplacements FTP, il devient nécessaire d'analyser la réponse reçue d'un FtpWebRequest à l'aide de l'attribut Méthode WebRequestMethods.Ftp.ListDirectoryDetails. Le défi se pose en raison des variations dans les formats de réponse entre les logiciels de serveur FTP. Par exemple, un serveur peut renvoyer une réponse dans un format DOS de style Windows, tandis qu'un autre peut adhérer à un format UNIX de style Linux.

Solution d'analyse C# personnalisée :

Bien que la classe FtpWebRequest ne gère pas nativement ces variations de format, on peut créer une solution C# personnalisée. Pour le format de style DOS, le code suivant peut être utilisé :

string pattern = "^(\d+-\d+-\d+\s+\d+:\d+(\w{2}))\s+(<DIR>|\d+)\s+(.*)$";
Regex regex = new Regex(pattern);
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);
    string s = match.Groups[1].Value;
    DateTime modified = DateTime.ParseExact(s, "MM-dd-yy  hh:mmtt", culture, DateTimeStyles.None);
    s = match.Groups[2].Value;
    long size = (s != "<DIR>") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine("{0,-16} {1,9}  {2}", name, size, modified);
}
Copier après la connexion

Solution moderne utilisant la commande MLSD :

Une meilleure approche consiste à exploiter la commande MLSD , qui est pris en charge par les serveurs FTP modernes. Cette commande renvoie un format standardisé et lisible par machine pour les listes de répertoires. Certaines bibliothèques tierces, telles que WinSCP .NET, prennent en charge la commande MLSD et fournissent des résultats analysés de manière cohérente.

RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null);
foreach (RemoteFileInfo file in files)
{
    Console.WriteLine("{0,-16} {1,9}  {2}", file.Name, file.Length, file.LastWriteTime);
}
Copier après la connexion

Conclusion :

Analyse FTP Les réponses aux listes d'annuaire nécessitent une gestion minutieuse des différents formats. Bien qu'une solution personnalisée soit possible, il est plus fiable d'utiliser des bibliothèques prenant en charge la commande MLSD moderne. Cette approche permet une analyse cohérente et simplifie la tâche d'extraction des métadonnées pertinentes des fichiers et des répertoires à partir des réponses FTP.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal