20

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?

4

3 回答 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 回答