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