(のような)フォルダパスが与えられた場合C:\Random Folder
、どのようにしてその中に特定の拡張子を保持するファイルを見つけることができますtxt
か?ディレクトリで検索する必要があると思いますが、*.txt
そもそもこの検索をどのように開始するのかわかりません。
6 に答える
System.IO.Directory
クラスと静的メソッドを見てくださいGetFiles
。パスと検索パターンを受け入れるオーバーロードがあります。例:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
Directoryクラスを使用できます
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
実際、それは非常に簡単です。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));
もちろん、このテクニックにも多くのバリエーションがあります。フィルタが単純な場合、他の回答のいくつかは単純です。これには、列挙の遅延(重要な場合)と、より多くのコードを犠牲にしてより柔軟なフィルタリングという利点があります。
以下のメソッドは、特定の拡張子を持つファイルのみを返します(例:.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));
}
私の理解によると、これは2つの方法で行うことができます。
1)GetfilesメソッドでDirectory Classを使用し、すべてのファイルをトラバースして、必要な拡張子を確認できます。
Directory.GetFiles( "your_folder_path)[i] .Contains("*。txt")
2)ファイルパスをパラメータとして取得して拡張子を検証するGetExtensionメソッドでパスクラスを使用できます。ファイルパスを取得するには、単一のファイルをフェッチして検証に使用できるファイルパスを返すループ条件を設定するだけです。
Path.GetExtension(your_file_path).Equals( "。json")
注:両方のロジックがループ状態にある必要があります。
このコードは、すべてのタイプの拡張子ファイルを含むファイルの読み取りに使用します。
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");