C#类如何解析WebRequestMethods.Ftp.ListDirectoryDetails FTP响应?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
我正在创建一个服务来监视FTP位置以获得新的更新,并需要使用WebRequestMethods.Ftp.ListDirectoryDetails方法来解析从FtpWebRequest响应返回的响应。 如果所有响应遵循相同的格式,这将是相当容易的,但不同的FTP服务器软件提供不同的响应格式。 例如,可以返回: 08-10-11 12:02PM <DIR> Version2 06-25-09 02:41PM 144700153
image34.gif 06-25-09 02:51PM 144700153 updates.txt 11-04-10 02:45PM 144700214
digger.tif 另一台服务器可能会返回: d--x--x--x 2 ftp ftp 4096 Mar 07 2002 bin -rw-r--r-- 1 ftp ftp 659450 Jun 15 05:07 TEST.TXT -rw-r--r-- 1 ftp ftp 101786380 Sep 08 2008 TEST03-05.TXT drwxrwxr-x 2 ftp ftp 4096 May 06 12:24 dropoff 有谁知道完全托管(不需要访问Windows上的外部DLL)C#类,可以无缝地处理这些情况? 我只需要列出具有以下详细信息的目录的内容:文件/目录名称,上次更新或创建的时间戳。
使用Regex构建了一个简单的解决方案,使用捕获组解析每一行中的相关信息: public static Regex FtpListDirectoryDetailsRegex = new Regex(@".*(? 然后,可以通过以下方法从捕获组中提取值: string ftpResponse = "-r--r--r-- 1 ftp ftp 0 Nov 19 11:08 aaa.txt"; Match match = FtpListDirectoryDetailsRegex.Match(ftpResponse); string month = match.Groups["month"].Value; string day = match.Groups["day"].Value; string yearTime = match.Groups["yearTime"].Value; string fileName = match.Groups["fileName"].Value; 有些不值得注意的事情是:
实际上试图解析 你希望使用支持现代 例如对于WinSCP .NET程序集,可以使用其 他们在内部使用 返回的列表被显示为具有以下属性的
大多数其他第三方库也会这样做。 为此,使用 该文章在 2021/7/9 15:03:26 编辑过 |
关键字查询
相关文章
正在查询... |