Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрет повторного открытия QFile
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
chereppiter
Как запретить повторное открытие файла? Например, есть файл "file.ext". Предположим, что он в данный момент открыт приложением и последнее пишет в него данные. Параллельно приложение пытается сохранить другой файл с таким же именем в эту же директорию. Производится проверка на существование файла с таким именем. Если файл существует, то выдаётся предупреждение. Если пользователь подтверждает перезапись, то приложение пытается открыть файл и начать запись. В таком случае получается, что файл открывается повторно и в него параллельно пишутся различные данные (например, из 2-х потоков). Надо как-то запретить открытие файла, если он в данный момент открыт. Понятно, что можно просто хранить в каком-нибудь списке пути к открытым файлам и перед открытием проверять этот список, но, мне кажется, должно быть более изящное решение :)
Iron Bug
гугл сказал, что существует QxtFileLock.
но вообще-то такие залочивания очень разные от системы к системе. так что я не очень понимаю, как оно там работает.
chereppiter
Спасибо, посмотрю, что это такое.

Это, как я понимаю, нужно какую-то библиотеку расширений ещё ставить, а хотелось бы обойтись только возможностями самой Qt.
Litkevich Yuriy
Цитата(chereppiter @ 6.2.2013, 18:10) *
хотелось бы обойтись только возможностями самой Qt.
В Qt нет блокировки файлов.
Как сказала Iron Bug, смотри компонент из библиотеки Qxt Lib, её не сложно использовать.
chereppiter
Ок, спасибо.
lanz
Если одна и та же программа, то можно использовать именованый семафор http://doc.qt.digia.com/qt/qsystemsemaphore.html.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2018 IPS, Inc.