在.Net 4中,有两个函数可以枚举路径中的文件。 EnumerateFiles和EnumerateFileSystemEntries。 MSDN没有对它们的差异给出足够的解释。这些差异是什么?
答案 0 :(得分:26)
EnumerateFileSystemEntries =>枚举文件,目录和文件和目录。
EnumerateFiles =>用于枚举仅文件。 (不是目录)
答案 1 :(得分:8)
EnumerateFiles
仅返回文件名。 EnumerateFileSystemEntries
还会返回目录名称
答案 2 :(得分:1)
@Habib和@Sergey回答时,您需要使用EnumerateFileSystemEntries
而不是EnumerateFiles
。我将通过一个例子来扩展他们的答案。
以下是展示差异的代码:
public static void Main()
{
Directory.CreateDirectory("dir");
Directory.CreateDirectory("dir2");
File.WriteAllText(Path.Combine("dir", Path.GetRandomFileName()), "file");
var datapath = ".";
var files = Directory.EnumerateFiles(datapath, "*", SearchOption.AllDirectories);
files.Dump();
var fileSystemEntries = Directory.EnumerateFileSystemEntries(datapath, "*", SearchOption.AllDirectories);
fileSystemEntries.Dump();
}
输出
Dumping object(System.IO.FileSystemEnumerableIterator`1[String])
[
.\dir\epp3114y.jjr
]
Dumping object(System.IO.FileSystemEnumerableIterator`1[String])
[
.\dir
,
.\dir2
,
.\dir\epp3114y.jjr
]