В.Net 4 есть две функции для перечисления файлов в пути. EnumerateFiles и EnumerateFileSystemEntries. MSDN не дает достаточно объяснений относительно их различий. Каковы эти различия?
В чем разница между EnumerateFiles и EnumerateFileSystemEntries в.NET 4?
Ответ 1
EnumerateFileSystemEntries => перечисляет файлы, каталоги и файлы и каталоги.
EnumerateFiles => для перечисления только файлов. (Не каталоги)
Ответ 2
EnumerateFiles
возвращает только имена файлов. EnumerateFileSystemEntries
возвращает имена каталогов также
Ответ 3
Как ответили @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
]