In .Net 4 there are two functions to enumerate files in a path. The EnumerateFiles and EnumerateFileSystemEntries. The MSDN does not give enough explanations about their differences. Which are these differences?
问问题
5264 次
3 回答
28
EnumerateFileSystemEntries => 枚举文件、目录以及文件和目录。
EnumerateFiles =>仅用于枚举文件。(不是目录)
于 2012-11-19T10:17:24.047 回答
8
EnumerateFiles
仅返回文件名。还EnumerateFileSystemEntries
返回目录名称
于 2012-11-19T10:17:24.807 回答
1
正如@Habib 和@Sergey 回答的那样,您需要使用EnumerateFileSystemEntries
而不是EnumerateFiles
. 我将用一个例子来扩展他们的答案。
- EnumerateFiles:返回与指定路径中的搜索模式匹配的可枚举文件名集合,并可选择搜索子目录。
- EnumerateFileSystemEntries:返回指定路径中文件名和目录名的可枚举集合。
这是展示差异的代码:
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
]
于 2019-03-28T12:21:42.167 回答