Question

Je suis en train de se connecter au serveur FTP via le code c # et je reçois la liste des fichiers et des répertoires. Et que je gardais dans un ArrayList (avec tous les attributs). Je peux trouver le type de serveur FTP via la commande SYS ftp. J'ai une expression régulière pour des fichiers sur UNIX pour analyser le fichier \ attributs de répertoires. Mais je n'ai pas d'expression pour les fichiers de serveur FTP Windows analyse syntaxique. Je dois aider à faire que ..

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

Je dois analyser ces derniers. Date, heure, Dir \ fichier, le nom du fichier

S'il vous plaît aider. Merci.

Était-ce utile?

La solution

Je ne sais pas beaucoup sur C #, mais si vous avez juste besoin d'un RegEx essayer celui-ci:

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$

1 $ = jour, 2 $ = temps, $ 3 = am ou pm, 4 $ = le type (peut être NULL), 5 $ = taille (null si dir), 6 $ = nom

ou 4 $ ssi est seulement ou vide

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$

Je suppose que "<" et ">" sont pas les caractères spéciaux à c #

Autres conseils

^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$

Groupes de capture: 0: datetime 1: Est-dir 2: Taille du fichier (ou une valeur nulle pour le répertoire) 3: Nom

Je n'ai pas un compilateur à portée de main, donc je ne peux pas tester, mais il devrait être assez proche pour commencer.

Il semble que les lignes ont une structure fixe. Ainsi, vous pouvez simplement faire ceci:

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top