101

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

4

6 に答える 6

201

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

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");
于 2010-06-30T18:21:50.267 に答える
38

Directoryクラスを使用できます

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
于 2010-06-30T18:22:04.420 に答える
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));

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

于 2010-06-30T18:24:28.503 に答える
2

以下のメソッドは、特定の拡張子を持つファイルのみを返します(例:.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));
    }
于 2016-12-30T02:41:58.067 に答える
1

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

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

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

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

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

注:両方のロジックがループ状態にある必要があります。

于 2017-03-24T10:22:24.800 に答える
0

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

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
于 2017-04-07T11:52:44.673 に答える