Analyse des réponses FTP avec une classe C# flexible
La gestion des connexions FTP peut être une tâche complexe, en particulier lorsqu'il s'agit de formats de réponse divers. Pour relever ce défi, vous pouvez utiliser la méthode ListDirectoryDetails de FtpWebRequest, mais cela peut toujours nécessiter l'analyse et la gestion des variations dans les réponses.
Analyse des listes de style DOS/Windows
Pour les listings au format DOS/Windows, vous pouvez utiliser le code suivant :
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")); }
Ceci Le modèle regex correspond aux horodatages, aux tailles de fichiers/répertoires et aux noms pour le style DOS/Windows.
Listes de style UNIX
Pour les listes de style UNIX, pensez à vous référer à les réponses sur la gestion du MLSD pour les répertoires FTP.
Une option alternative : le MLSD moderne Commande
Idéalement, vous pouvez exploiter la commande MLSD pour obtenir des listes de répertoires dans un format structuré. Ceci est préférable à l’analyse du format LIST lisible par l’homme. MLSD est pris en charge par de nombreuses bibliothèques et outils tiers tels que WinSCP.
Conclusion
L'analyse des réponses FTP peut être complexe, mais en utilisant les bons outils et techniques, vous pouvez garantir une gestion fiable des différents formats d’annonces. L'utilisation d'un outil complet tel que WinSCP qui prend en charge à la fois MLSD et LIST peut fournir une solution plus robuste et extensible pour vos besoins de gestion 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!