"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je analyser de manière fiable les listes de répertoires FTP formatées de manière variable en C #?

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

Publié le 2025-03-23
Parcourir:313

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 de variables à l'aide de C #

Instruction Problème:

Dans le développement d'un service pour surveiller les locations FTP, il devient nécessaire Webrequestmethods.ftp.listDirectoryDetails Méthode. Le défi survient en raison des variations des formats de réponse sur le logiciel FTP Server. 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 de l'analyse C # personnalisée:

Bien que la classe C # FTPWEBReBrequest ne gère pas les variations natifs, une solution de C # Custom. Pour le format de style dos, le code suivant peut être utilisé:

string pattern = "^(\\d -\\d -\\d \\s \\d :\\d (\\w{2}))\\s (|\\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 != "") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine("{0,-16} {1,9}  {2}", name, size, modified);
}

Solution moderne à l'aide de la commande mlsd:

Une meilleure approche consiste à tirer parti de la commande mlsd, qui est prise en charge par des serveurs FTP modernes. Cette commande renvoie un format standardisé et lisible à la machine pour les annonces 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:

analyser les réponses de liste du répertoire FTP nécessite une manipulation minutieuse de formats variables. Bien qu'une solution personnalisée soit possible, il est plus fiable d'utiliser des bibliothèques qui prennent en charge la commande MLSD moderne. Cette approche оеес démar

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3