我想通过C#代码连接到FTP服务器和我收到的文件和目录的列表。而且,我在一个ArrayList中现在的储蓄(所有属性)。我能找到通过SYS ftp命令进行FTP服务器类型。我有一个正则表达式的基于UNIX的文件解析文件\目录的属性。但我的Windows FTP服务器的文件解析没有什么表情。我需要在作出该帮助..

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

我需要解析这些。日期,时间,迪尔\文件,该文件的名称

请帮忙。感谢。

有帮助吗?

解决方案

我不知道很多关于C#,但如果你只需要一个正则表达式试试这个:

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

$ 1 =日期,$ 2 =时间,$ 3 =上午或下午,$ 4 =类型(可以为空),$ 5 =尺寸(空如果DIR),$ 6 =名称

或当且仅当$ 4是仅或空

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

我假设 “<” 和 “>” 是在C#没有特殊字符

其他提示

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

捕获基团: 0:日期时间 1:DIR 2:文件大小(或空为目录) 3:名称

我没有编译器方便,所以我不能测试,但它应该是足够接近上手。

它看起来像线具有固定的结构。所以,你可以简单地这样做:

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top