.NET 4中的EnumerateFiles和EnumerateFileSystemEntries有什么区别?

时间:2012-11-19 10:15:41

标签: c# .net

在.Net 4中,有两个函数可以枚举路径中的文件。 EnumerateFiles和EnumerateFileSystemEntries。 MSDN没有对它们的差异给出足够的解释。这些差异是什么?

3 个答案:

答案 0 :(得分:26)

EnumerateFileSystemEntries =>枚举文件,目录和文件和目录

EnumerateFiles =>用于枚举仅文件。 (不是目录)

答案 1 :(得分:8)

EnumerateFiles仅返回文件名。 EnumerateFileSystemEntries还会返回目录名称

答案 2 :(得分: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
]

Try it Online!