ホームページ >バックエンド開発 >C++ >C# で可変形式の FTP ListDirectoryDe​​tails 応答を解析するにはどうすればよいですか?

C# で可変形式の FTP ListDirectoryDe​​tails 応答を解析するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 18:40:12788ブラウズ

How Can I Parse Variably Formatted FTP ListDirectoryDetails Responses in C#?

C# による FTP WebRequestMethods.Ftp.ListDirectoryDe​​tails 応答の解析

FTP サーバーは、WebRequestMethods.Ftp.ListDirectoryDe​​tails メソッドの実行時にさまざまな応答形式を利用します。そのため、返されたコンテンツを解析するのが困難になります。この記事では、これらの複雑さに対処し、さまざまな応答のバリエーションをシームレスに処理するためのマネージド C# ソリューションを提供します。

FTP 応答解析の課題

FTP 応答はサーバー ソフトウェアによって異なります。一貫性のないフォーマットになります。 FTP サーバーには、DOS/Windows 形式を使用するものと、*nix 形式を使用するものがあるため、微妙な違いがあります。

マネージド C# ソリューション

これらの可変応答形式を処理するには、マネージド C# ソリューションが表示されます:

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());

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 応答形式と互換性があり、以下を抽出します。ファイル/ディレクトリ名、最終変更タイムスタンプ、およびファイル サイズ。

代替オプション

LIST 応答を解析することは有効な方法ですが、次のような FTP クライアントを利用することをお勧めします。 MLSD コマンドをサポートし、ディレクトリ リストの構造化および標準化された形式を提供します。 WinSCP などのサードパーティ ライブラリは、MLSD サポートを実装し、FTP 管理用の追加機能を提供します。

結論として、提供される C# ソリューションは、FTP WebRequestMethods.Ftp.ListDirectoryDe​​tails 応答解析を効果的に処理し、多様な応答形式を考慮します。ただし、LIST メソッドの制限を考慮し、最適な FTP 管理を行うには、MLSD コマンドを活用する代替オプションを検討することをお勧めします。

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

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