Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
chereppiter |
6.2.2013, 15:08
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 30 Регистрация: 12.11.2012 Пользователь №: 3595 Спасибо сказали: 0 раз(а) Репутация: 0
|
Как запретить повторное открытие файла? Например, есть файл "file.ext". Предположим, что он в данный момент открыт приложением и последнее пишет в него данные. Параллельно приложение пытается сохранить другой файл с таким же именем в эту же директорию. Производится проверка на существование файла с таким именем. Если файл существует, то выдаётся предупреждение. Если пользователь подтверждает перезапись, то приложение пытается открыть файл и начать запись. В таком случае получается, что файл открывается повторно и в него параллельно пишутся различные данные (например, из 2-х потоков). Надо как-то запретить открытие файла, если он в данный момент открыт. Понятно, что можно просто хранить в каком-нибудь списке пути к открытым файлам и перед открытием проверять этот список, но, мне кажется, должно быть более изящное решение
|
|
|
|
|
Iron Bug |
6.2.2013, 15:48
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
гугл сказал, что существует QxtFileLock.
но вообще-то такие залочивания очень разные от системы к системе. так что я не очень понимаю, как оно там работает. |
|
|
|
|
chereppiter |
6.2.2013, 16:10
Сообщение
#3
|
|
Студент ![]() Группа: Участник Сообщений: 30 Регистрация: 12.11.2012 Пользователь №: 3595 Спасибо сказали: 0 раз(а) Репутация: 0
|
Спасибо, посмотрю, что это такое.
Это, как я понимаю, нужно какую-то библиотеку расширений ещё ставить, а хотелось бы обойтись только возможностями самой Qt. |
|
|
|
|
Litkevich Yuriy |
6.2.2013, 16:54
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(chereppiter @ 6.2.2013, 18:10) Link хотелось бы обойтись только возможностями самой Qt. В Qt нет блокировки файлов.Как сказала Iron Bug, смотри компонент из библиотеки Qxt Lib, её не сложно использовать. |
|
|
|
|
chereppiter |
6.2.2013, 17:06
Сообщение
#5
|
|
Студент ![]() Группа: Участник Сообщений: 30 Регистрация: 12.11.2012 Пользователь №: 3595 Спасибо сказали: 0 раз(а) Репутация: 0
|
Ок, спасибо.
|
|
|
|
|
lanz |
14.2.2013, 8:28
Сообщение
#6
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8
|
Если одна и та же программа, то можно использовать именованый семафор Link.
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 8:43 |