Analyse de la réponse FTP WebRequestMethods.Ftp.ListDirectoryDetails avec C#
Les serveurs FTP utilisent divers formats de réponse lors de l'exécution de la méthode WebRequestMethods.Ftp.ListDirectoryDetails, ce qui rend difficile l'analyse du contenu renvoyé. Cet article aborde ces complexités et fournit une solution C# gérée pour gérer de manière transparente différentes variations de réponse.
Défis d'analyse des réponses FTP
Les réponses FTP varient en fonction du logiciel serveur, ce qui conduit à des formats incohérents. Certains serveurs FTP utilisent un format DOS/Windows, tandis que d'autres utilisent un format *nix, introduisant des différences subtiles.
Solution C# gérée
Pour gérer ces formats de réponse variables, une solution C# gérée est présentée :
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()); string pattern = @"^(\d+-\d+-\d+\s+\d+:\d+(?:AM|PM))\s+(<DIR>|\d+)\s+(.+)$"; Regex regex = new Regex(pattern); IFormatProvider culture = CultureInfo.GetCultureInfo("en-us"); 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} size = {1,9} modified = {2}", name, size, modified.ToString("yyyy-MM-dd HH:mm")); }
Ce code est compatible avec les formats de réponse DOS/Windows, extrayant les noms de fichiers/répertoires, dernière modification horodatages et tailles de fichiers.
Options alternatives
Bien que l'analyse des réponses LIST soit une approche valide, il est recommandé d'utiliser des clients FTP qui prennent en charge la commande MLSD, fournissant un format structuré et standardisé pour les inscriptions dans les annuaires. Les bibliothèques tierces, telles que WinSCP, implémentent la prise en charge MLSD et offrent des fonctionnalités supplémentaires pour la gestion FTP.
En conclusion, la solution C# fournie gère efficacement l'analyse des réponses FTP WebRequestMethods.Ftp.ListDirectoryDetails, en tenant compte de divers formats de réponse. Cependant, compte tenu des limites de la méthode LIST, il est recommandé d'explorer des options alternatives exploitant la commande MLSD pour une gestion FTP optimale.
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!