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.

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top