質問

特定の拡張機能(再帰)のすべてのファイルのリストを取得したいと思いますが それだけ その拡張機能で終わるファイル。

たとえば、次のファイルがある場合は、「.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

何か案は?

役に立ちましたか?

解決 2

これを試して:

var exeFiles = Directory.EnumerateFiles(sourceDirectory, 
                                        "*", SearchOption.AllDirectories)
               .Where(s => s.EndsWith(".exe") && s.Count( c => c == '.') == 2)
               .ToList();

他のヒント

これは一般的な問題です。に注意してください MSDNドキュメント:

「*.txt」などのSearchPatternでAsterisk WildCard文字を使用する場合、拡張機能が正確に3文字の場合の一致する動作は、拡張機能が3文字を超えている場合とは異なります。 正確に3文字のファイル拡張子を持つsearchpattern の拡張機能を持つファイルを返します 最初の3文字がSearchPatternで指定されたファイル拡張子と一致する3つ以上の文字。

検索して解決することはできません .exe 拡大;クライアントコードでもう1回結果をフィルタリングする必要があります。

今、注意すべきことの1つはこれです。実際、次の例を考慮します 実行可能 ファイル:

file1.exe
file2.txt.exe

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

file4.txt.exe1

それで、質問は、どのアルゴリズムが欲しいですか?私にはあなたが次のことを望んでいるように見えます:

  • の拡張機能があるファイル exe.
  • ないファイル 多数 拡張機能。

あなたが望むアルゴリズムを取得するための素晴らしいアプローチについては、アーメドの答えを見てください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top