「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#のFTPディレクトリリストをさまざまにフォーマットする方法を確実に解析するにはどうすればよいですか?

C#のFTPディレクトリリストをさまざまにフォーマットする方法を確実に解析するにはどうすればよいですか?

2025-03-23に投稿されました
ブラウズ:182

How Can I Reliably Parse Variably Formatted FTP Directory Listings in C#?

解析ftp応答の解析ftp応答C#

問題のステートメント:

string pattern = "^(\\ d - \\ d - \\ d \\ s \\ d:\\ d(\\ w {2}))\\ s( | \\ d)\\ s(。*)"; Regex regex = new Regex(パターン); while(!reader.endofstream) { string line = reader.readline(); マッチマッチ= 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!= "")? long.parse(s):0; 文字列名= match.groups [3] .value; console.writeLine( "{0、-16} {1,9} {2}"、name、size、modified); }

string pattern = "^(\\d -\\d -\\d \\s \\d :\\d (\\w{2}))\\s (|\\d )\\s (.*)$";
Regex regex = new Regex(pattern);
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 != "") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine("{0,-16} {1,9}  {2}", name, size, modified);
}

より良いアプローチは、最新のFTPサーバーによってサポートされるMLSDコマンドを活用することです。このコマンドは、ディレクトリリスト用の標準化されたマシン読み取り可能な形式を返します。 winscp .netなどの特定のサードパーティライブラリは、MLSDコマンドをサポートし、一貫した方法で解析結果を提供します。 foreach(ファイル内のremotefileinfoファイル) { console.writeLine( "{0、-16} {1,9} {2}"、file.name、file.length、file.lastwritetime); }

結論:

RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null);
foreach (RemoteFileInfo file in files)
{
    Console.WriteLine("{0,-16} {1,9}  {2}", file.Name, file.Length, file.LastWriteTime);
}
ftpディレクトリリスト応答には、さまざまな形式を慎重に処理する必要があります。カスタムソリューションは可能ですが、最新のMLSDコマンドをサポートするライブラリを利用する方が信頼できます。このアプローチo同アプローチftp応答から関連するファイルとディレクトリメタデータを抽出するタスクを一貫した解析と簡素化します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3