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

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

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

问题是,文件路径具有完全访问权限,文件已创建且可写,但 isWritable() 仍返回 false。如果我删除写访问检查并简单地写入文件,则写入成功。QFile::open 也返回 true。有任何想法吗?

4

2 回答 2

4

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

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

于 2012-04-13T15:29:25.817 回答
0

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

于 2012-04-13T15:41:38.283 回答