ホームページ > バックエンド開発 > C++ > C# で FTP 応答をさまざまなリスト形式で効率的に解析するにはどうすればよいですか?

C# で FTP 応答をさまざまなリスト形式で効率的に解析するにはどうすればよいですか?

DDD
リリース: 2024-12-26 16:18:09
オリジナル
199 人が閲覧しました

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 応答の解析は複雑になる場合がありますが、適切なツールと手法を使用することで、さまざまなリスト形式を確実に処理できます。 MLSD と LIST の両方をサポートする WinSCP のような包括的なツールを採用すると、FTP 管理のニーズを満たす、より堅牢で拡張可能なソリューションを提供できます。

以上がC# で FTP 応答をさまざまなリスト形式で効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート