Russian Qt Forum
Мая 19, 2025, 17:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: самый ранний файл из каталога  (Прочитано 3379 раз)
Примерный ученик
Бывалый
*****
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.027 секунд. Запросов: 23.