Qt C ++ удалить файл только для чтения в Windows, используя - PullRequest
15 голосов
/ 31 марта 2011

Я установил файл только для чтения (щелкните правой кнопкой мыши и проверьте только для чтения). Теперь, когда я пытаюсь удалить файл с помощью функции bool QDir::remove(const QString & fileName), файл не удаляется и возвращается false.
Как мне поступить с этим? Я попытался поиграться, изменив разрешение файла с помощью QFile::setPermission, но это также возвращает false.
Кто-нибудь может посоветовать подход к тому же?

Ответы [ 6 ]

18 голосов
/ 29 августа 2013
file.setPermissions(QFile::ReadOther | QFile::WriteOther);
file.remove();

должно работать.

1 голос
/ 27 сентября 2011

Во-первых, вы проверили QFile :: error () , чтобы увидеть, почему файл не был удален?

Во-вторых, если вы все еще не получаете полезногосообщение об ошибке назад, вы можете проверить источник, чтобы узнать, можете ли вы получить больше информации.Проверка источника показывает, например, следующее:

QFile :: remove () использует базовый файловый движок для удаления.Этот файловый движок зависит от платформы и в qfsfileengine_win.cpp для Windows.Строка 830 показывает, что для удаления используется DeleteFile , поэтому вы можете получить больше информации, вызвав GetLastError , хотя я надеюсь, что Qt соответствующим образом переведет сообщение об ошибке.1015 *

1 голос
/ 31 марта 2011

Вы можете установить права доступа к файлам с помощью QFile

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

0 голосов
/ 07 августа 2013

Я думаю, вы должны использовать это:

bool QFile::remove ( const QString & fileName ) [static]

вместо этого:

QDir::remove ( const QString & fileName ) 
0 голосов
/ 13 марта 2012

Функция QDir :: remove () не является статической функцией. так что вы можете создать QDir с путем к родительскому файлу и вызвать, затем удалить его:

QDir dir (родительский каталог);

, а затем

dir.remove (имя_файл);

0 голосов
/ 27 сентября 2011

Вы пытались использовать bool QFile :: remove (const QString & fileName)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...