给定一个文件夹路径(如C:\Random Folder
),我如何在其中找到具有某个扩展名的文件(如)txt
?我想我必须搜索*.txt
在目录中,但是我不确定首先应该如何开始该搜索。
Answers:
看一下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));
}
使用此代码可读取所有类型的扩展文件。
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");