【发布时间】:2011-03-10 07:00:09
【问题描述】:
给定一个文件夹路径(如C:\Random Folder),我如何在其中找到一个包含特定扩展名的文件,如txt?我想我必须在目录中搜索*.txt,但我不确定我应该如何开始搜索。
【问题讨论】:
给定一个文件夹路径(如C:\Random Folder),我如何在其中找到一个包含特定扩展名的文件,如txt?我想我必须在目录中搜索*.txt,但我不确定我应该如何开始搜索。
【问题讨论】:
使用此代码读取具有所有类型扩展文件的文件。
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
【讨论】:
据我了解,这可以通过两种方式完成:
1) 您可以使用带有 Getfiles 方法的 Directory Class 并遍历所有文件以检查我们所需的扩展名。
Directory.GetFiles("your_folder_path)[i].Contains("*.txt")
2) 您可以使用带文件路径作为参数并验证扩展名的 GetExtension 方法的路径类。要获取文件路径,只需有一个循环条件,它将获取单个文件并返回可以使用的文件路径进行验证。
Path.GetExtension(your_file_path).Equals(".json")
注意:两个逻辑都必须在循环条件内。
【讨论】:
下面的方法只返回具有特定扩展名的文件(例如:带有.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));
}
【讨论】:
其实很简单。您可以将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));
当然,这种技术也有很多变化。如果您的过滤器更简单,其他一些答案会更简单。这个具有延迟枚举(如果重要的话)和更灵活的过滤的优点,但会以更多代码为代价。
【讨论】:
您可以使用Directory 类
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
【讨论】:
查看System.IO.Directory 类和静态方法GetFiles。它有一个接受路径和搜索模式的重载。示例:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
【讨论】:
macos.txt 的文件怎么办