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

QFile file(filePath); QFileInfo fileInfo(file); file.open(QIODevice::ReadWrite); //or WriteOnly if(!fileInfo.isWritable()) { //Log error } else { //Save to file } 

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

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

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

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