Поиск в каталогах по тоннам файлов?

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

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

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

6.08.2008 14:57:16
5 ОТВЕТОВ
РЕШЕНИЕ

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

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

5
6.08.2008 15:35:30
(Сейчас я работаю в новой компании, но помню некоторые части этого проекта.) Проблема в том, что AFAIK, MSVE имел определенную структуру папок, которую он ожидал - и все для одного слоя помещалось в одну папку. Мы изучили его недостаточно, чтобы узнать, сможем ли мы объединить несколько папок, чтобы MSVE мог просматривать все из них или просматривать определенные папки на определенных уровнях.
Adam V 1.09.2009 16:47:14

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

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

1
6.08.2008 15:42:08

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

DIR /s/b > Files.txt
1
6.08.2008 15:47:49

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

2
6.08.2008 16:03:51
К счастью, мы никогда не пытались использовать службу индексирования. И команда, в которую я входил, теперь состоит из одного человека. Поэтому я думаю, что эта часть проекта опустилась далеко внизу списка приоритетов.
Adam V 1.09.2009 16:48:08

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

1
6.08.2008 23:53:38