| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT] QFile и монопольный захват |
| Автор: xbarmaglot 30.9.2015, 17:36 |
| В отдельном потоке постоянно вычитывается директория и обрабатываются новые фалы. Но если в директорию копируется очень большой файл, то происходит попытка чтения еще не скопированного файла - получается чтение битого файла. В WInAPI можно было попытаться монопольно открыть файл, для того, чтобы понять, что он переписался. Можно в QT отследить данную проблему ? З.Ы. Есть QLockFile, но при попытке залочить файл он его стирает... |
| Автор: borisbn 30.9.2015, 17:47 |
| 1) Можно пытаться открыть его на запись - ( QIODevice::WriteOnly | QIODevice::Append ). Если не дали, то файл ещё пишется. 2) Если файл записывает твоя же программа, то есть два варианта: 2.1) После окончания записи файла класть рядом с ним файл-квитанцию с таким же именем, но с другим расширением, например *.done (в программе, которая мониторит каталог нужно ждать только файлы *.done, и когда найдёшь - читать файл с аналогичным именем, но с "боевым" расширением, а *.done - удалять) 2.2) Писать файл с расширением *.tmp, а по окончании записи переименовывать с нужным расширением. |