Эквивалент EnumerateFiles () в .NET 3.5 - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь очистить более 150 КБ файлов в каталоге, используя .NET 3.5 и PowerShell.Поскольку файлов так много, я не хочу влиять на производительность сервера, читая все сразу.Есть ли какой-либо механизм с .NET 3.5 или PowerShell или методы, доступные через PInvoke, которые позволили бы мне лениво загружать файлы?Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 03 февраля 2011

Если под "загрузкой" вы имеете в виду ленивый способ получить список файлов в каталоге, у вас есть несколько вариантов.

Начиная с .NET 4.0,Вы можете использовать новые Directory.EnumerateFiles API для получения потоковой (ленивой) последовательности файлов в определенном каталоге.Поиск возвращает элементы по требованию и поэтому не требует столько памяти, сколько существующие методы GetFiles.

Если вы не можете использовать .NET 4, вам придется запустить собственный перечислитель потокового файла.Для этого потребуется использовать FindFirstFile и FindNextFile Win32 API.Тем не менее, вы можете взглянуть на эту реализацию в CodeProject, так как она выглядит именно так.

...