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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top