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条答案
按热度按时间pgx2nnw81#
QFileInfo::isWritable()
不是用来检查打开的文件是否可写,而是检查当前用户对文件的权限。如果你只想看看打开文件的操作是否成功,请检查调用QFile::open()
的返回值。如果返回true,则文件已准备好写入。如果返回false,请进行错误处理。我不知道为什么
isWritable()
在你的情况下失败。可能是Windows认为文件已经打开,因此不能从另一个open()
调用写入。如果你真的想检查权限,在打开文件之前调用isWritable()
。wqlqzqxt2#
尝试以管理员的身份运行你的程序(右键点击)。也许这个问题是由UAC引起的。