Название: Самодельная корзинка Отправлено: xintrea от Март 03, 2009, 04:05 Здравствуйте!
В своей программе хочу сделать самодельную "корзину", т.е. директрорию, куда складываются устаревшие версии всяких файлов. Для корзины хочу сделать ограничиващие настройки - Максимальный размер корзины (например 10Мб) - Максимальное число файлов в корзине (например 1000) Вопрос. Как организовать "ограничивающую" работу с корзиной так, чтоб она не сильно влияла на работу программы? Ну, например
А как сделать правильно? Название: Re: Самодельная корзинка Отправлено: Пантер от Март 03, 2009, 07:29 Выноси в поток и не будет тормозов.
Название: Re: Самодельная корзинка Отправлено: pastor от Март 03, 2009, 12:46 см. QFileSystemWatcher, вот только проблема с максимальным кол-вом файлов:
Цитировать Note: The act of monitoring files and directories for modifications consumes system resources. This implies there is a limit to the number of files and directories your process can monitor simultaneously. On Mac OS and all BSD variants, for example, an open file descriptor is required for each monitored file. The system limits the number of open file descriptors to 256 by default. This means that addPath() and addPaths() will fail if your process tries to add more than 256 files or directories to the file system monitor. Also note that your process may have other file descriptors open in addition to the ones for files being monitored, and these other open descriptors also count in the total. Название: Re: Самодельная корзинка Отправлено: xintrea от Март 03, 2009, 13:56 Выноси в поток и не будет тормозов. Точно не будет? А то я придумал такую схему - при старте программы проверяется директория корзины, запоминается список имен файлов, их дата и размер. Потом при работе программы в случае засовывания нового файла в корзину, инфа о нем добавляется в этот список, потом список проверяется на количество файлов и размер. Если что-то превышено - наиболее старые файлы удалятся и из списка и с диска. По идее, должно работать быстро. А с потоками чую надолго программирование затянется, упарюсь глюки вычищать. Лучше затем, когда с потоками разберусь, описаный алгоритм в поток засунуть. Тогда будет работать максимально быстро. Название: Re: Самодельная корзинка Отправлено: Пантер от Март 03, 2009, 17:39 Что-нибудь еще может лезть в этот каталог? Как вариант:
1. При первом запуске прога создает базу файлов. 2. При работе производится обновление базы, т.е. вставили физически файл, вставили его и в базу. 3. При закрытии база сохраняется. 4. При последующем открытии открывается база. Если делать так, то даже без потоков тормозов не будет. Но если кто-нибудь еще может в этот каталог лезть.... Хотя, можно делать контрольные проверки, т.е. раз в день обновлять базу, пошуршав по каталогу. :) |