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。有什么想法吗?
答案 0 :(得分:4)
QFileInfo::isWritable()
不用于检查打开的文件是否可写,而是检查当前用户对该文件的权限。如果您只想查看打开的文件操作是否成功,请检查调用QFile::open()
的返回值。如果返回true,则表示文件已准备好写入。如果返回false,请进行错误处理。
我不知道为什么isWritable()
在你的情况下失败了。可能是Windows认为文件已打开,因此无法从另一个open()
调用写入。如果您确实想要检查权限,请在打开文件前致电isWritable()
。
答案 1 :(得分:0)
尝试以管理员身份运行程序(右键单击它)。也许这个问题是由UAC引起的。