Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.07.16;
Скачать: [xml.tar.bz2];

Вниз

Получение данных о папке без FindFirst..FindNext   Найти похожие ветки 

 
Empleado ©   (2016-05-20 18:27) [0]

Добрый вечер,

Есть ли API (или другие средства), позволяющие получить следующую информацию о папке на локальном, а также на удаленном компьютере:
- количество файлов в папке
- общий размер всех файлов в папке

Главное - без использования FindFirst..FindNext.

Спасибо.


 
Dimka Maslov ©   (2016-05-20 20:33) [1]

Даже сама винда при отображении папок с большим числов файлов создаёт список медленно и постепенно. Следовательно, всё равно используются FindFirstFile и FindNextFile


 
K-1000 ©   (2016-05-21 06:19) [2]

А почему эти функции нельзя использовать?


 
DVM ©   (2016-05-21 12:37) [3]

Ну если для локального HDD еще можно что-либо придумать (но не факт, что будет быстрее), то для сетевых дисков вряд ли.


 
Empleado ©   (2016-05-21 23:27) [4]


> K-1000 ©   (21.05.16 06:19) [2]

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

Да и подумалось, может за последний десяток лет появилось более оптимальное/радикальное средство сбора информации о папках?...


 
Германн ©   (2016-05-22 01:18) [5]

Ну тут есть естественный вопрос к ТС. А что есть "папка" в твоём понимании?


 
Pavia ©   (2016-05-22 09:08) [6]

Профессионалы с Sources.ru вручную набирают NFTS. Говорят получается быстрее.


> Даже сама винда при отображении папок с большим числов файлов
> создаёт список медленно и постепенно.

Она не по этому тормозит. Там самое медленное это получение иконки к файлу, папке.


 
DVM ©   (2016-05-22 10:14) [7]


> Pavia ©   (22.05.16 09:08) [6]


> Она не по этому тормозит. Там самое медленное это получение
> иконки к файлу, папке.

Иконки получаются в отдельном потоке, это не мешает заходу и выходу в/из папки. Кроме того они кэшируются в системном имиджлисте и для известных типов заново не считываюся с диска. Кроме того, ListView в проводнике работает в виртуальном режиме и не видимые в данный момент файлы вообще не нуждаются в отрисовке иконок (хотя в фоне они извлекаются). Это не главная причина "тормозов".

Зайди в Linux в папку c миллионами файлов через консольный файловый менеджер, типа MC - тоже придется подождать.


 
Dimka Maslov ©   (2016-05-22 11:09) [8]


> Она не по этому тормозит. Там самое медленное это получение
> иконки к файлу, папке.


При определении размеров папки иконки не нужны. Но система тормозит.


 
Pavia ©   (2016-05-22 12:19) [9]


> При определении размеров папки иконки не нужны. Но система
> тормозит.

Не тормозит, а работает.


> Зайди в Linux в папку c миллионами файлов через консольный
> файловый менеджер, типа MC - тоже придется подождать.

Возьмите DOS там ждать не надо.
По поводу миллиона. Як дети теория алгоритмов для кого придумана была? Конечно если взять параметр N большим, то и задача будет решаться долго. Но это не значит что она тормозит! Так как к любой задаче можно найти N который читается за секунды, минуты. Поэтому алгоритмы и сравнивают по O() или по удельному значению.


 
Kerk ©   (2016-05-22 12:31) [10]


> Конечно если взять параметр N большим, то и задача будет
> решаться долго. Но это не значит что она тормозит!

А скорость выполнение единичной итерации конечно никак на скорость работы не влияет. Влияет только N.


 
Dimka Maslov ©   (2016-05-22 17:38) [11]


> она тормозит!


Таки тормозит. Или вообще не работает, а показывает прогрессбар.


 
DVM ©   (2016-05-22 17:40) [12]


> Pavia ©   (22.05.16 12:19) [9]


> Возьмите DOS там ждать не надо.

Везде надо. Волшебства не бывает. Во времена DOS миллионы файлов в папках не хранили.


 
Rouse_ ©   (2016-05-23 10:56) [13]

Варианта всего два:
1. использовать NtQueryDirectoryFile - ну небольшое ускорение будет - но не сильно заметное.
2. ручками парсить структуру диска, учитывая что там может быть как NTFS, так и FAT16/FAT32.
Это будет пошустрее, но опять-же не супер шустро.


 
han_malign ©   (2016-05-24 11:55) [14]


> Варианта всего два:

- начиная с Vista есть честная обертка к NtQueryDirectoryFile - GetFileInformationByHandleEx...


 
Empleado ©   (2016-05-25 10:14) [15]

Понятно.
Спасибо всем.


 
Dimka Maslov ©   (2016-05-25 17:59) [16]


> начиная с Vista есть честная обертка к NtQueryDirectoryFile
> - GetFileInformationByHandleEx...


Только её до сих пор не потрудились прописать в Delphi... По меньшей мере, в XE9 её ещё не было.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2017.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
4-1223453904
Denol
2008-10-08 12:18
2017.07.16
Как получить список устройств, подключенных к компьютеру


2-1441812254
pavelnk
2015-09-09 18:24
2017.07.16
Просветите по округлению


2-1442377244
vegarulez
2015-09-16 07:20
2017.07.16
Twebbrowser+IIHTMLDocument2 парсинг + innerhtml ?


15-1463758069
Empleado
2016-05-20 18:27
2017.07.16
Получение данных о папке без FindFirst..FindNext


15-1463907824
Jeer
2016-05-22 12:03
2017.07.16
Питерцы - победители в чм по программированию.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский