フォルダ内の特定の拡張子を持つファイルを検索します


92

(のようなC:\Random Folder)フォルダーパスが与えられた場合、特定の拡張子を持つファイルをどのようにして見つけることができますtxtか?*.txtディレクトリを検索する必要があると思いますが、最初にこの検索をどのように開始すればよいのかわかりません。

回答:


177

System.IO.Directoryクラスと静的メソッドを見てくださいGetFiles。パスと検索パターンを受け入れるオーバーロードがあります。例:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");

ありがとう!すべての回答は良かったですが、最初に回答したのでそうです...そうです:)
Dominic K

6
拡張子がtxt_のような場合、これは機能しません。フォルダーに* .exeファイルがあるかどうかを確認しようとしていますが、*。exe_ファイルは1つしかありませんが、クエリはそれを返しますが、これは正しくありません。
エイドリアン


次のような名前の単一ファイルが必要な場合macos.txt
Prashant Pimpale

拡張子のないすべてのファイルを検索したい。ファイルの種類が "file"(拡張子なし)のファイルがいくつかあります。それらのファイルを見つけるにはどうすればよいですか?
sohaiby


14

実際、それはとても簡単です。System.IO.Directoryクラスはと組み合わせて使用できますSystem.IO.Path。次のようなもの(LINQを使用するとさらに簡単になります):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

もちろん、この手法にも多くのバリエーションがあります。フィルターが単純であれば、他の回答のいくつかはより単純です。これには、遅延列挙(重要な場合)およびより多くのコードを犠牲にしてより柔軟なフィルタリングの利点があります。


あなたがこれに入れたすべての余分な仕事をありがとう。ただし、ディレクトリにはテキストファイルが1つしかないため、簡単なステートメントを作成します(プログラムによって抽出されたものです)。
ドミニクK

3

以下のメソッドは、特定の拡張子を持つファイルのみを返します(例:.txtを含むが.txt1を含まないファイル)

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }

1

私の理解によれば、これは2つの方法で行うことができます:

1)GetfilesメソッドでDirectory Classを使用し、すべてのファイルをトラバースして、必要な拡張子を確認できます。

Directory.GetFiles( "your_folder_path)[i] .Contains(" *。txt ")

2)GetExtensionメソッドでパスクラスを使用して、ファイルパスをパラメーターとして取得し、拡張子を検証することができます。ファイルパスを取得するには、単一のファイルをフェッチして検証に使用できるファイルパスを返すループ条件を設定するだけです。

Path.GetExtension(your_file_path).Equals( "。json")

注:どちらのロジックもループ条件内にある必要があります。


-1

このコードを使用して、すべてのタイプの拡張ファイルを含むファイルを読み取ります。

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.