Analisi Dettagli del file per Windows Server FTP
-
19-09-2019 - |
Domanda
sto provando a connettersi al server FTP attraverso il codice C # e sto ottenendo l'elenco di file e directory. E che io sono il risparmio in un ArrayList (con tutti gli attributi). Posso trovare il tipo FTP Server tramite il comando SYS ftp. Ho un espressione regolare per i file in base UNIX per analizzare le directory attributi di file \. Ma non ho nessuna espressione per i file server di Windows FTP parsing. Ho bisogno di aiuto nel fare questo ..
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
Ho bisogno di analizzare questi. Data, Ora, Dir \ file, il nome del file
Si prega di aiuto. Grazie.
Soluzione
Non so molto di C #, ma se avete solo bisogno di una RegEx provare questo:
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$
$ 1 = data, $ 2 = tempo, $ 3 = am o pm, $ 4 = tipo (potrebbe essere nullo), $ 5 = dimensioni (null se dir), $ 6 = nome
o se e solo se $ 4 è solo o vuoto
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$
Suppongo che "<" e ">" sono i caratteri speciali in C #
Altri suggerimenti
^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$
gruppi di cattura: 0: datetime 1: E 'dir 2: Dimensione File (o null per directory) 3: Nome
Non ho un compilatore a portata di mano in modo da non posso test che, ma dovrebbe essere abbastanza vicino per iniziare.
Sembra che le linee hanno fissato la struttura. Così si potrebbe semplicemente fare questo:
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);