使用靈活的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中文網其他相關文章!