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()

10-08 05:14