フォルダーパス(C:\Random Folder
など)が指定されている場合、txt
などの特定の拡張子を持つファイルを見つけるにはどうすればよいですか?ディレクトリで*.txt
を検索する必要があると思いますが、最初にこの検索を開始する方法がわからない。
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クラスを使用し、すべてのファイルを走査して、必要な拡張子を確認できます。
Directory.GetFiles( "your_folder_path)[i] .Contains(" *。txt ")
2)パラメーターとしてファイルパスを取得し、拡張子を検証するGetExtensionメソッドでパスクラスを使用できます。ファイルパスを取得するには、単一のファイルをフェッチし、検証に使用できるファイルパスを返すループ条件を設定するだけです。
Path.GetExtension(your_file_path).Equals( "。json")
注:両方のロジックがループ条件内にある必要があります。