QFileInfo :: isWritable()在Windows 7上以完全权限返回false

时间:2012-04-13 14:56:46

标签: windows qt file-permissions

QFile file(filePath);
QFileInfo fileInfo(file);

file.open(QIODevice::ReadWrite); //or WriteOnly

if(!fileInfo.isWritable())
{
    //Log error
}
else
{
    //Save to file
}

问题是,filepath具有完全访问权限,文件是创建和可写的,但isWritable()仍然返回false。如果我删除了写访问检查并只是写入文件,则写入成功。 QFile :: open也返回true。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

QFileInfo::isWritable()不用于检查打开的文件是否可写,而是检查当前用户对该文件的权限。如果您只想查看打开的文件操作是否成功,请检查调用QFile::open()的返回值。如果返回true,则表示文件已准备好写入。如果返回false,请进行错误处理。

我不知道为什么isWritable()在你的情况下失败了。可能是Windows认为文件已打开,因此无法从另一个open()调用写入。如果您确实想要检查权限,请在打开文件前致电isWritable()

答案 1 :(得分:0)

尝试以管理员身份运行程序(右键单击它)。也许这个问题是由UAC引起的。