【问题标题】:Parsing File details for Windows FTP Server解析 Windows FTP 服务器的文件详细信息
【发布时间】:2010-12-27 03:12:51
【问题描述】:

我正在尝试通过 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

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

请帮忙。谢谢。

【问题讨论】:

    标签: ftp-client fileparsing fileparse


    【解决方案1】:
    ^(\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:FileSize(或目录为 null) 3:名称

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

    【讨论】:

    • 正则表达式 regex = new Regex(@"^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}( A|P)M)\s*(){0,1}\s*(\d*)\s*(\w)\s*$", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions。 IgnoreCase | RegexOptions.IgnorePatternWhitespace);匹配匹配 = regex.Match(filedetail);这里匹配返回null。
    【解决方案2】:

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

    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);
    

    【讨论】:

      【解决方案3】:

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

      ^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w&lt;&gt;]*)\s+(\d*)\s+([\w\._\-]+)\s*$

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

      或者如果 $4 是唯一的或者是空的

      ^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(&lt;DIR&gt;)?\s+(\d*)\s+([\w\._\-]+)\s*$

      我认为“”在 c# 中不是特殊字符

      【讨论】:

      • $4=type(可能为空),这里似乎有问题。在 dir 的情况下,我得到 '>' 请重新检查。
      • 好吧,也许 c# 需要 ([\w]+)*,我的意图是:也许有一些不同于“”的东西,所以如果只有 出现或不替换它由 ()? (?->可选表示零或一)
      猜你喜欢
      • 2012-07-18
      • 2017-07-16
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多