Russian Qt Forum
Октябрь 02, 2024, 13:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: самый ранний файл из каталога  (Прочитано 3189 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Июль 19, 2010, 10:53 »

Есть папка, в которую падают файлы.
Задача передать их по сети в порядке поступления, расширения файлов - произвольные.
Пока файлов мало, проблем нет...
Но когда их несколько тысяч, то QDir начинает притормаживать...
Как можно получить имя очередного выбираемого файла максимально быстро, не читая весь каталог?
Записан

Как мало времени и как много нужно узнать
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Июль 19, 2010, 12:37 »

Как вариант построить для начала модель (QDirModel), затем ее отсортировать как нужно, затем брать данные из модели по очереди и отправлять файлы.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Июль 19, 2010, 13:21 »

Забыл сказать, QT3.3.8.
1) Нет модели
2) файлы постоянно могут поступать...
Записан

Как мало времени и как много нужно узнать
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Июль 19, 2010, 13:32 »

Тогда могу предложить еще пару вариантов

1. Реализовать многопоточность, то есть один поток будет постоянно в некоторое хранилище писать данные о файле который нужно отправить, второй будет читать данные из этого хранилища и отправлять, если оно пустое то спит несколько секунд(ну или как нужно). Только здесь нужно будет поаккуратнее быть с доступом к хранилищу.

2. Реализовать свое подобие модели, по сути это просто класс хранящий массив значений, с удобным доступом к ним, записали данные в модель отсортировали, начали отправлять, как все ушло запоминаем дату последнего файла и начинаем цикл заново, только уже начинаем записывать с последней даты, я думаю что файлы из прошлого приходить не могут, а стало быть и проблем быть не должно.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #4 : Июль 19, 2010, 13:55 »

ecspertiza
Вопрос в том, каким способом я могу в каталоге ".../p/" узнать имя самого старого файла, не читая содержимого всего каталога?
Записан

Как мало времени и как много нужно узнать
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Июль 19, 2010, 14:30 »

Не знаю есть ли такая фича в Qt 3, в 4 точно есть для QDir есть ф-ция QFileInfoList   entryInfoList ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) вот последний флаг и задает сортировку, можешь выставить QDir::DirsLast, но я думаю что в этом случае он все равно загрузит всю инфу о файлах в память.
Код:
Вопрос в том, каким способом я могу в каталоге ".../p/" узнать имя самого старого файла, не читая содержимого всего каталога?

Скорее всего никак Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.165 секунд. Запросов: 22.