ホームページ >バックエンド開発 >C++ >C# で FTP ディレクトリのリストを効率的に解析するにはどうすればよいですか?

C# で FTP ディレクトリのリストを効率的に解析するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 13:48:14983ブラウズ

How to Efficiently Parse FTP Directory Listings in C#?

C# での WebRequestMethods.Ftp.ListDirectoryDe​​tails の FTP 応答の解析

FtpWebRequest.ListDirectoryDe​​tails メソッドを使用すると、ファイルとディレクトリに関する詳細情報を取得できます。 FTPサーバー。ただし、このメソッドからの応答の解析は、FTP サーバーごとに使用される形式が異なるため、困難になる可能性があります。

さまざまな応答形式のカスタム解析

応答を解析するにはシームレスに、さまざまな形式を処理するカスタム C# クラスを作成できます。例:

string pattern = @"\s+(\d+)(\w+)(\s+|\s*\d+[^ ].+)(.*)";
Regex regex = new Regex(pattern);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/");
request.Credentials = new NetworkCredential("user", "password");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());

while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);

    if (match.Success)
    {
        string fileName = match.Groups[4].Value.Trim();
        long size = long.Parse(match.Groups[1].Value);
        string lastModified = match.Groups[2].Value + " " + match.Groups[3].Value;
        bool isDirectory = match.Groups[1].Value.StartsWith("d");

        Console.WriteLine("{0}\t{1}\t{2}", fileName, lastModified, size);
    }
}

機械読み取り可能な応答を備えた最新の FTP クライアントの使用

ただし、MLSD コマンドをサポートする FTP クライアントを使用することをお勧めします。これは、ディレクトリのリストを機械可読形式で返します。人間が判読可能な LIST コマンド応答の解析は、MLSD をサポートしていない古いサーバーの最後の手段である必要があります。

WinSCP .NET などのサードパーティ ライブラリは、MLSD および人間が判読できるさまざまなサポートを備えた FTP クライアント機能を提供します。リスト形式。これにより、FTP ディレクトリ リストの解析プロセスが簡素化されます。

サードパーティ ライブラリを使用する利点

  • 信頼性の高い解析: MLSD の解析応答とさまざまな LIST コマンド形式が処理されます
  • 詳細情報: 機械読み取り可能な MLSD 応答により、ファイルのアクセス許可、グループ、所有者などの詳細情報が提供されます。
  • LIST コマンドへのフォールバック: MLSD がサポートされていない場合、ライブラリは LIST コマンドを使用して、応答を一貫した形式に変換できます。形式。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。