首頁 >後端開發 >C++ >如何在 C# 中有效解析不同清單格式的 FTP 回應?

如何在 C# 中有效解析不同清單格式的 FTP 回應?

DDD
DDD原創
2024-12-26 16:18:09198瀏覽

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