Dateidetails für Windows FTP Server analysieren
-
19-09-2019 - |
Frage
Ich versuche über den C# -Code eine Verbindung zum FTP -Server herzustellen und erhalte die Liste der Dateien und Verzeichnisse. Und dass ich in einer Arraylist speichere (mit allen Attributen). Ich kann den FTP -Servertyp über den SYS FTP -Befehl finden. Ich habe einen regelmäßigen Ausdruck für UNIX -basierte Dateien, um die Attribute der Datei Verzeichnisse zu analysieren. Ich habe jedoch keinen Ausdruck für die Analyse von Windows FTP -Serverdateien. Ich brauche Hilfe, um das zu machen.
04-30-09 10:40AM <DIR> Acrobat
12-08-09 10:36PM 9058 AuthCheck.zip
12-06-09 12:49PM 174 desktop.ini
11-09-09 03:33PM <DIR> FailedPDF
Ich muss diese analysieren. Datum, Uhrzeit, Dir Datei, Name der Datei
Bitte helfen Sie. Vielen Dank.
Lösung
Ich weiß nicht viel über C#, aber wenn Sie nur einen Regex brauchen, versuchen Sie es mit diesen:
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$
$ 1 = Datum, $ 2 = Zeit, $ 3 = AM oder PM, $ 4 = Typ (könnte null sein), $ 5 = Größe (null wenn dir), $ 6 = Name
oder iff $ 4 ist nur oder leer
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$
Ich nehme an, dass "<" und ">" bei C# keine besonderen Chars sind
Andere Tipps
^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$
Erfassungsgruppen: 0: DateTime 1: IS DIR 2: FileSize (oder Null für Verzeichnis) 3: Name
Ich habe keinen Compiler, also kann ich das nicht testen, aber es sollte nah genug sein, um loszulegen.
Es sieht so aus, als hätten die Linien eine feste Struktur. Sie könnten also einfach das tun:
Date fileDate;
bool isDir;
int fileSize;
string fileName;
fileDate=line.Substring(0,18).ParseExact("MM-dd-yy hh-sstt");
isDir=line.Substring(24,5)=="DIR";
if (!isDir)
{
fileSize=int.Parse(line.Substring(29,10).Trim());
}
fileName=line.Substring(39);