Heim > Backend-Entwicklung > C++ > Wie kann ich variabel formatierte FTP-ListDirectoryDetails-Antworten in C# analysieren?

Wie kann ich variabel formatierte FTP-ListDirectoryDetails-Antworten in C# analysieren?

Susan Sarandon
Freigeben: 2024-12-25 18:40:12
Original
783 Leute haben es durchsucht

How Can I Parse Variably Formatted FTP ListDirectoryDetails Responses in C#?

Antwort von FTP WebRequestMethods.Ftp.ListDirectoryDetails mit C# analysieren

FTP-Server nutzen verschiedene Antwortformate, wenn sie die Methode WebRequestMethods.Ftp.ListDirectoryDetails ausführen. Dies macht es schwierig, den zurückgegebenen Inhalt zu analysieren. Dieser Artikel befasst sich mit diesen Komplexitäten und bietet eine verwaltete C#-Lösung zur nahtlosen Verarbeitung unterschiedlicher Antwortvarianten.

Herausforderungen beim Parsen von FTP-Antworten

FTP-Antworten variieren je nach Serversoftware, führend zu inkonsistenten Formaten. Einige FTP-Server verwenden ein DOS/Windows-Format, während andere ein *nix-Format verwenden, was zu subtilen Unterschieden führt.

Verwaltete C#-Lösung

Um diese variablen Antwortformate zu verarbeiten, Es wird eine verwaltete C#-Lösung vorgestellt:

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

Dieser Code ist mit DOS/Windows-Antwortformaten kompatibel und extrahiert Datei-/Verzeichnisnamen, zuletzt geändert Zeitstempel und Dateigrößen.

Alternative Optionen

Während das Parsen von LIST-Antworten ein gültiger Ansatz ist, wird empfohlen, FTP-Clients zu verwenden, die den MLSD-Befehl unterstützen strukturiertes und standardisiertes Format für Verzeichniseinträge. Bibliotheken von Drittanbietern wie WinSCP implementieren die MLSD-Unterstützung und bieten zusätzliche Funktionen für die FTP-Verwaltung.

Zusammenfassend lässt sich sagen, dass die bereitgestellte C#-Lösung die Antwortanalyse von FTP WebRequestMethods.Ftp.ListDirectoryDetails effektiv handhabt und dabei verschiedene Antwortformate berücksichtigt. Angesichts der Einschränkungen der LIST-Methode wird jedoch für eine optimale FTP-Verwaltung die Erkundung alternativer Optionen empfohlen, die den MLSD-Befehl nutzen.

Das obige ist der detaillierte Inhalt vonWie kann ich variabel formatierte FTP-ListDirectoryDetails-Antworten in C# 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