Вопрос

Я использую MSVE, и у меня есть свои собственные плитки, которые я показываю слоями сверху.Проблема в том, что их очень много, и они находятся на сетевом сервере.В определенных каталогах содержится порядка более 30 000 файлов.Изначально я вызвал Directory.GetFiles , но как только я начал тестирование в псевдореальной среде, время ожидания истекло.

Каков наилучший способ программно перечислить и перебрать такое количество файлов?

Редактировать:Мой коллега предложил использовать службу индексации MS.Кто-нибудь пробовал этот подход, и (как) он сработал?

Это было полезно?

Решение

В прошлом я работал в системе SAN с аудиозаписями телефонии, у которых были проблемы с количеством файлов в одной папке - эта система стала непригодной для использования где-то около 5000 (в Windows 2000 Advanced Server с приложением в C#.Net 1.1) - единственное разумное решение, которое мы придумали, заключалось в изменении структуры папок таким образом, чтобы в них было более разумное количество файлов.Интересно, что Explorer тоже взял бы тайм-аут!

Соглашение, которое мы придумали, представляло собой структуру, разбитую на годы, месяцы и дни, но это будет зависеть от вашей системы и от того, можете ли вы контролировать структуру каталогов...

Другие советы

Определенно разделите их.Тем не менее, держитесь как можно дальше от Службы индексации.

Нет..NET полагается на базовые вызовы Windows API, которые сами по себе очень, очень ненавидят такое количество файлов.

Как говорит Ронни:разделите их.

Вы могли бы использовать DOS?

DIR /s/b > Files.txt

Вы также можете либо самостоятельно проиндексировать файлы, либо использовать стороннее приложение, например Google desktop или коперник чтобы сделать это, а затем взаимодействовать с их индексом.Я знаю, что у copernic есть API, который вы можете использовать для поиска любого файла в их индексе, и он также поддерживает сопоставление сетевых дисков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top