柔軟な 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 応答の解析は複雑になる場合がありますが、適切なツールと手法を使用することで、さまざまなリスト形式を確実に処理できます。 MLSD と LIST の両方をサポートする WinSCP のような包括的なツールを採用すると、FTP 管理のニーズを満たす、より堅牢で拡張可能なソリューションを提供できます。
以上がC# で FTP 応答をさまざまなリスト形式で効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。