首页 >后端开发 >C++ >如何在 C# 中有效解析不同列表格式的 FTP 响应?

如何在 C# 中有效解析不同列表格式的 FTP 响应?

DDD
DDD原创
2024-12-26 16:18:09202浏览

How Can I Efficiently Parse FTP Responses in C# for Different Listing Formats?

使用灵活的 C# 类解析 FTP 响应

管理 FTP 连接可能是一项复杂的任务,尤其是在处理不同的响应格式时。为了应对这一挑战,您可以使用 FtpWebRequest 的 ListDirectoryDe​​tails 方法,但这仍然需要解析和处理响应中的变化。

解析 DOS/Windows 样式列表

对于 DOS/Windows 格式的列表,您可以使用以下命令代码:

string pattern = @"\^(\d+-\d+-\d+\s+\d+:\d+(?:AM|PM))\s+(<DIR>|\d+)\s+(.+)$";
Regex regex = new Regex(pattern);
IFormatProvider culture = CultureInfo.GetCultureInfo("en-us");
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);
    string s = match.Groups[1].Value;
    DateTime modified =
        DateTime.ParseExact(s, "MM-dd-yy  hh:mmtt", culture, DateTimeStyles.None);
    s = match.Groups[2].Value;
    long size = (s != "<DIR>") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine(
        "{0,-16} size = {1,9}  modified = {2}",
        name, size, modified.ToString("yyyy-MM-dd HH:mm"));
}

此正则表达式模式匹配 DOS/Windows 样式的时间戳、文件/目录大小和名称。

UNIX 样式列表

对于 UNIX 风格的列表,请考虑参考处理 FTP 的 MLSD 上的响应

替代选项:现代 MLSD 命令

理想情况下,您可以利用 MLSD 命令以结构化格式获取目录列表。这优于解析人类可读的 LIST 格式。 MLSD 受到许多第三方库和工具的支持,例如 WinSCP。

结论

解析 FTP 响应可能很复杂,但通过使用正确的工具和技术,您可以确保可靠地处理不同的列表格式。使用像 WinSCP 这样同时支持 MLSD 和 LIST 的综合工具可以为您的 FTP 管理需求提供更强大和可扩展的解决方案。

以上是如何在 C# 中有效解析不同列表格式的 FTP 响应?的详细内容。更多信息请关注PHP中文网其他相关文章!

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