На c:
у меня есть десятки тысяч файлов *.foobar
. Они находятся в самых разных местах (например, в подкаталогах). Эти файлы имеют размер примерно от 1 до 64 КБ и имеют открытый текст.
У меня есть класс Foobar(string fileContents)
, который строго типизирует эти .foobar
файлы.
Моя задача — получить список всех файлов *.foobar
на c:
, представленных в виде массива объектов Foobar
. Какой самый быстрый способ сделать это?
Мне интересно узнать, есть ли лучший способ (несомненно), чем мой первый подход, который следует, и есть ли у этого моего подхода какие-либо потенциальные проблемы (например, проблемы параллелизма ввода-вывода, вызывающие исключения?):
var files = Directory.EnumerateFiles
(rootPath, "*.foobar", SearchOption.AllDirectories);
Foobar[] foobars =
(
from filePath in files.AsParallel()
let contents = File.ReadAllText(filePath)
select new Foobar(contents)
)
.ToArray();