Pregunta

Estoy tratando de conectarse a un servidor FTP a través del código de c# y me estoy haciendo la lista de Archivos y directorios.Y que me estoy ahorrando en un ArrayList(con todos los atributos).No puedo encontrar el Servidor FTP tipo a través de la SYS comando ftp.Tengo una expresión regular para UNIX basados en archivos para analizar el archivo\directorios de atributos.Pero yo no tengo ninguna expresión para Windows servidor FTP los archivos de análisis.Necesito ayuda para hacer eso..

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

Es necesario analizar estos.Fecha, Hora, Dir\Archivo, Nombre del archivo

Por favor, ayudar.Gracias.

¿Fue útil?

Solución

Yo no sé mucho acerca de C#, pero si sólo necesita un RegEx probar esto:

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

$1 = fecha, $2=tiempo, $3=am o pm, $4=tipo (puede ser null), $5=tamaño(null si dir), $6=nombre

o iff $4 es sólo o vacío

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

Supongo que "<"y ">" hay caracteres especiales en c#

Otros consejos

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

Captura de los grupos:0:datetime 1:Se dir 2:Tamaño de archivo (o null en el directorio) 3:Nombre

Yo no tengo un compilador a mano así que no puedo probar eso, pero debe ser lo suficientemente cerca como para empezar.

Parece que las líneas tienen una estructura fija.Así que usted podría simplemente hacer esto:

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top