使用灵活的 C# 类解析 FTP 响应
管理 FTP 连接可能是一项复杂的任务,尤其是在处理不同的响应格式时。为了应对这一挑战,您可以使用 FtpWebRequest 的 ListDirectoryDetails 方法,但这仍然需要解析和处理响应中的变化。
解析 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中文网其他相关文章!