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。有任何想法吗?
最佳答案
QFileInfo::isWritable()
并非用于检查打开的文件是否可写,而是用于检查当前用户对该文件的权限。如果只想查看打开文件操作是否成功,请检查QFile::open()
调用中的返回值。如果返回true,则文件准备就绪。如果错误返回false,请执行错误处理。
我不知道为什么isWritable()
在您的情况下失败。 Windows可能认为文件已打开,因此无法通过另一个open()
调用写入。如果您确实要检查权限,请在打开文件之前调用isWritable()
。