0

我正在尝试通过 c# 代码连接到 FTP 服务器,并且正在获取文件和目录的列表。而且我保存在一个 ArrayList(具有所有属性)中。我可以通过 SYS ftp 命令找到 FTP Server 类型。我有一个基于 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

我需要解析这些。日期、时间、目录\文件、文件名

请帮忙。谢谢。

4

3 回答 3

1

我对 C# 了解不多,但如果你只需要 RegEx,试试这个:

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

$1 = 日期,$2=时间,$3=am 或 pm,$4=type(可以为 null),$5=size(null 如果 dir),$6=name

或当且仅当 $4 为空或为空

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

我想“<”和“>”在c#中没有特殊字符

于 2009-12-16T07:11:53.937 回答
0
^(\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:是目录 2:文件大小(或目录为空) 3:名称

我手边没有编译器,所以我无法对其进行测试,但它应该足够接近才能开始使用。

于 2009-12-16T07:00:11.033 回答
0

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

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);
于 2009-12-16T07:05:38.573 回答