鉴于文件夹路径(如C:\Random Folder
),如何在其中找到包含特定扩展名的文件,例如txt
?我假设我必须在目录中搜索*.txt
,但我不确定我应该如何首先开始此搜索。
答案 0 :(得分:153)
查看System.IO.Directory
类和静态方法GetFiles
。它有一个接受路径和搜索模式的重载。例如:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
答案 1 :(得分:26)
您可以使用Directory类
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
答案 2 :(得分:13)
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));
当然,这种技术也有很多变化。如果您的过滤器更简单,其他一些答案会更简单。这个具有延迟枚举(如果重要)的优点,并且以更多代码为代价进行更灵活的过滤。
答案 3 :(得分:1)
以下方法仅返回具有特定扩展名的文件(例如:带.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));
}
答案 4 :(得分:0)
根据我的理解,这可以通过两种方式完成:
1)您可以将目录类与Getfiles方法一起使用,并遍历所有文件以检查我们所需的扩展名。
Directory.GetFiles( “your_folder_path)[I]。载(” *。TXT“)
2)你可以使用带有GetExtension方法的Path Class,它将文件路径作为参数并验证扩展。要获取文件路径,只需要一个循环条件来获取单个文件并返回可以使用的文件路径用于验证。
Path.GetExtension(your_file_path).Equals( “JSON”)
注意:两个逻辑都必须处于循环状态。
答案 5 :(得分:-1)
将此代码用于包含所有类型扩展文件的读取文件。
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");