Запись в файл с помощью QFile завершается неудачно без кода ошибки, когда он уже открыт в Excel

Я пытаюсь записать в существующий файл с QFile, который работает как ожидалось. Однако проблема в том, что если файл открыт в Excel, запись в файл из моей программы завершится неудачно.

Я пытаюсь проверить разрешения с помощью QFileInfo и имею все права на чтение и запись для файла. Тест

bool opened = file-> open (QIODevice :: WriteOnly)

возвращает истину.

Та же проблема не возникает, когда файл открывается с помощью notepad ++.

Как я могу проверить, заблокирован ли файл и не может быть записан?

2

Решение

Excel блокирует свои открытые файлы для эксклюзивного использования. Вы не можете написать в открытый файл, переместить или удалить его. Нет возможности обойти эту блокировку.

Смотрите также: Запись в заблокированный файл независимо от статуса блокировки

2

Другие решения

Когда вы используете функцию QFile :: write, она возвращает количество записанных байтов или -1, если произошла ошибка.

Если вы проверите код возврата из функции записи, вы сможете использовать его, чтобы определить, что файл заблокирован другим процессом.

Вызов QFile :: open возвращает без ошибок, потому что вы все равно можете получить действительный дескриптор файла, даже если другой процесс заблокировал его, не позволяя вам одновременно писать в него.

1

По вопросам рекламы [email protected]