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")); }
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!