首页 >后端开发 >C++ >如何在 C# 中高效解析 FTP 目录列表?

如何在 C# 中高效解析 FTP 目录列表?

Barbara Streisand
Barbara Streisand原创
2024-12-26 13:48:14973浏览

How to Efficiently Parse FTP Directory Listings in C#?

在 C# 中解析 WebRequestMethods.Ftp.ListDirectoryDe​​tails FTP 响应

FtpWebRequest.ListDirectoryDe​​tails 方法允许检索有关文件和目录的详细信息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 目录列表的过程。

使用第三方库的好处

  • 可靠的解析:解析 MLSD处理响应和各种 LIST 命令格式
  • 广泛的详细信息:机器可读的 MLSD 响应提供详细信息,例如文件权限、组和所有者。
  • 回退到 LIST 命令: 如果不支持 MLSD,图书馆可以使用 LIST 命令并将响应转换为一致的格式。

以上是如何在 C# 中高效解析 FTP 目录列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn