2

特定の拡張子 (再帰的) のすべてのファイルのリストを取得したいのですが、その拡張子で終わるファイルのみを取得します。

たとえば、拡張子が「.exe」のすべてのファイルを取得したい場合、次のファイルがあるとします。

file1.exe 、 file2.txt.exe 、 file3.exe.txt 、 file4.txt.exe1 、 file5.txt

1つのファイルのリストを取得することを期待しています: file1.exe.

次の行を使用しようとしています。

List<string> theList = Directory.GetFiles(@"C:\SearchDir", "*.exe", SearchOption.AllDirectories).ToList();

しかし、私が得たのは、次の 3 つのファイルのリストです。file1.exe , file2.txt.exe , file4.txt.exe1

何か案は?

4

2 に答える 2

4

これはよく見られる問題です。MSDN のドキュメントに注意してください。

"*.txt" などの searchPattern でアスタリスク ワイルドカード文字を使用する場合、拡張子がちょうど 3 文字の長さである場合と、拡張​​子が 3 文字より多いまたは短い場合の一致動作は異なります。ちょうど 3 文字のファイル拡張子を持つ searchPattern は、3 文字以上の拡張子を持つファイルを返します。最初の 3 文字は、searchPattern で指定されたファイル拡張子と一致します。

.exe拡張子を検索しても解決できません。クライアント コードでもう一度結果をフィルタリングする必要があります。

さて、これも注目すべき点です。次の例は、実際には実行可能ファイルと見なされます。

file1.exe
file2.txt.exe

一方、これは技術的には実行可能ファイルとは見なされません。

file4.txt.exe1

そこで質問は、どのアルゴリズムが必要かということになります。あなたは次のことを望んでいるように私には思えます:

  • 拡張子がexe.
  • 複数の拡張子を持たないファイル。

必要なアルゴリズムを取得するための素晴らしいアプローチについては、Ahmed の回答をご覧ください。

于 2013-11-07T12:49:39.817 に答える