Как разбить список файлов в каталоге в asp? - PullRequest
2 голосов
/ 12 сентября 2011

Мы используем folder = objFSO.GetFolder(<path>) для получения списка файлов с каталогом.

Затем мы For Each над массивом folder.Files выводим список имен файлов.

Мы дошли до того, что в папке тысячи файлов, и она довольно медленная, поэтому мы хотим добавить пагинацию на экран.Таким образом, чтобы все показать 500 файлов одновременно.Я понятия не имею, если это вообще возможно, и все поиски Google не помогли.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Во-первых, что касается списка файлов, можете ли вы получить список и сохранить (кэшировать) результат где-нибудь, чтобы ускорить повторный доступ?Это метод, который мы используем в .NET для получения больших списков файлов (мы используем веб-страницы ASP.NET, поэтому мы просто используем WebCache.Set, но я полагаю, что вы могли бы записать его в текстовый файл, если вам нужно).

Я вижу некоторые неподтвержденные доказательства здесь , что FSO довольно медленен при перечислении большого количества файлов:

Одним из соображений, которые не рассматриваются, является скорость.У меня было небольшое приложение VB, которое использовало FileSystemObject для циклического просмотра файлов в папке.Это заняло ок.5-7 минут, чтобы пройтись по каждому файлу в заданной папке (около 2200 файлов).Когда я переключился на использование команды DIR (), я мог просматривать файлы примерно за 6-10 секунд.Есть также ограничения для DIR (), но фактор скорости был огромным фактором, который шел против FileSystemObject.

Очевидно, что после того, как у вас есть листинг, вы просматриваете его 500 раз за раз со смещением/ размер страницы

РЕДАКТИРОВАТЬ: Я включил пример того, как использовать WScript.Shell, чтобы сделать это из пары статей aspfaq.com, которые я нашел ( 1 | 2 )

Set objWShell = CreateObject("WScript.Shell") 
Set objCmd = objWShell.Exec("%COMSPEC% /C dir c:\") 
strPResult = objCmd.StdOut.Readall() 
0 голосов
/ 13 сентября 2011

Несколько лет назад я написал онлайн-файловый браузер (доступно здесь ) и обнаружил, что он читает размеры файлов, что замедляет листинг файлов с помощью FSO. Как только я пропустил это, листинг стал молниеносным.

Для разбивки на страницы я бы порекомендовал создать «отключенный» набор записей ado из имен файлов, а затем использовать его для фактической навигации по именам ... тогда у вас есть встроенная нумерация страниц ... а также сортировка и поиск. Дайте мне знать, если вас интересует пример кода.

...