Heim > Backend-Entwicklung > C++ > Wie kann ich variabel formatierte FTP-Verzeichnislisten in C# zuverlässig analysieren?

Wie kann ich variabel formatierte FTP-Verzeichnislisten in C# zuverlässig analysieren?

Patricia Arquette
Freigeben: 2024-12-28 20:22:21
Original
870 Leute haben es durchsucht

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

Parsen von FTP-Antworten für Verzeichnislisten mit variablen Formaten unter Verwendung von C#

Problemstellung:

Bei der Entwicklung eines Dienstes zur Überwachung von FTP-Standorten wird es notwendig, die von einem FtpWebRequest empfangene Antwort mithilfe von zu analysieren WebRequestMethods.Ftp.ListDirectoryDetails-Methode. Die Herausforderung entsteht durch Unterschiede in den Antwortformaten verschiedener FTP-Serversoftware. Beispielsweise könnte ein Server eine Antwort in einem DOS-Format im Windows-Stil zurückgeben, während ein anderer einem UNIX-Format im Linux-Stil folgen könnte.

Benutzerdefinierte C#-Parsing-Lösung:

Obwohl die FtpWebRequest-Klasse diese Formatvariationen nicht nativ verarbeitet, kann man eine benutzerdefinierte C#-Lösung erstellen. Für das DOS-Format kann der folgende Code verwendet werden:

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);
}
Nach dem Login kopieren

Moderne Lösung mit MLSD-Befehl:

Ein besserer Ansatz besteht darin, den MLSD-Befehl zu nutzen , das von modernen FTP-Servern unterstützt wird. Dieser Befehl gibt ein standardisiertes, maschinenlesbares Format für Verzeichnislisten zurück. Bestimmte Bibliotheken von Drittanbietern, wie z. B. WinSCP .NET, unterstützen den MLSD-Befehl und liefern geparste Ergebnisse auf konsistente Weise.

RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null);
foreach (RemoteFileInfo file in files)
{
    Console.WriteLine("{0,-16} {1,9}  {2}", file.Name, file.Length, file.LastWriteTime);
}
Nach dem Login kopieren

Fazit:

Parsing FTP Verzeichnislistenantworten erfordern einen sorgfältigen Umgang mit unterschiedlichen Formaten. Obwohl eine benutzerdefinierte Lösung möglich ist, ist es zuverlässiger, Bibliotheken zu verwenden, die den modernen MLSD-Befehl unterstützen. Dieser Ansatz ermöglicht eine konsistente Analyse und vereinfacht die Aufgabe, relevante Datei- und Verzeichnismetadaten aus FTP-Antworten zu extrahieren.

Das obige ist der detaillierte Inhalt vonWie kann ich variabel formatierte FTP-Verzeichnislisten in C# zuverlässig analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage