Eternal Learner
Eternal Learner

Reputation: 3870

Qt C++ remove a read only file in windows using

I have set a file to be read-only (right click and check readonly). Now when I try to remove the file using the function bool QDir::remove(const QString & fileName) the file is not removed and false is returned.
How do I proceed with this? I have tried fiddling around by changing the permission of the file using QFile::setPermission, but that returns false too.
Can anybody advise an approach for the same?

Upvotes: 16

Views: 9724

Answers (6)

charango
charango

Reputation: 311

file.setPermissions(QFile::ReadOther | QFile::WriteOther);
file.remove();

should work.

Upvotes: 20

lxj
lxj

Reputation: 1

I think you should use this:

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

instead of this:

QDir::remove ( const QString & fileName ) 

Upvotes: -2

Anglejoy
Anglejoy

Reputation: 63

QDir::remove() function is not a static function. so you can create QDir with parent file path and call then remove it:

QDir dir(parent's directory);

and then

dir.remove(fileName);

Upvotes: -2

Kaleb Pederson
Kaleb Pederson

Reputation: 46489

First, have you checked QFile::error() to see why the file wasn't removed?

Second, in the event that you're still not getting a useful error message back, you could check the source to find out if you can get more information. Checking the source reveals the following, for example:

QFile::remove() uses the underlying file engine to do the removal. That file engine is platform specific and in qfsfileengine_win.cpp for windows. Line 830 shows that it's using DeleteFile to do the removal so you might be able to get more information by calling GetLastError, though I'd hope that Qt translates the error message appropriately.

Upvotes: 1

superpanda
superpanda

Reputation: 21

Have you tried to use bool QFile::remove(const QString &fileName)?

Upvotes: -3

Martin Beckett
Martin Beckett

Reputation: 96147

You can set file permissions with QFile

Of course this only for files you have user permission to do. The error may also be because the file is open in another app

Upvotes: 1

Related Questions