在 C# 中解析 WebRequestMethods.Ftp.ListDirectoryDetails FTP 响应
FtpWebRequest.ListDirectoryDetails 方法允许检索有关文件和目录的详细信息FTP 服务器。但是,由于不同 FTP 服务器使用不同的格式,解析此方法的响应可能具有挑战性。
不同响应格式的自定义解析
解析响应可以无缝地创建处理不同格式的自定义 C# 类。例如:
string pattern = @"\s+(\d+)(\w+)(\s+|\s*\d+[^ ].+)(.*)"; Regex regex = new Regex(pattern); FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/"); request.Credentials = new NetworkCredential("user", "password"); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()); while (!reader.EndOfStream) { string line = reader.ReadLine(); Match match = regex.Match(line); if (match.Success) { string fileName = match.Groups[4].Value.Trim(); long size = long.Parse(match.Groups[1].Value); string lastModified = match.Groups[2].Value + " " + match.Groups[3].Value; bool isDirectory = match.Groups[1].Value.StartsWith("d"); Console.WriteLine("{0}\t{1}\t{2}", fileName, lastModified, size); } }
使用具有机器可读响应的现代 FTP 客户端
但是,建议使用支持 MLSD 命令的 FTP 客户端,它以机器可读的格式返回目录列表。解析人类可读的 LIST 命令响应应该是不支持 MLSD 的过时服务器的最后手段。
WinSCP .NET 等第三方库提供 FTP 客户端功能,支持 MLSD 和各种人类可读的功能列表格式。这简化了解析 FTP 目录列表的过程。
使用第三方库的好处
以上是如何在 C# 中高效解析 FTP 目录列表?的详细内容。更多信息请关注PHP中文网其他相关文章!