(のようなC:\Random Folder
)フォルダーパスが与えられた場合、特定の拡張子を持つファイルをどのようにして見つけることができますtxt
か?*.txt
ディレクトリを検索する必要があると思いますが、最初にこの検索をどのように開始すればよいのかわかりません。
回答:
System.IO.Directory
クラスと静的メソッドを見てくださいGetFiles
。パスと検索パターンを受け入れるオーバーロードがあります。例:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
macos.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, "*.*");