QFileInfo::isWritable()在windows 7上完全权限时返回false

mfpqipee  于 2023-04-07  发布在  Windows
关注(0)|答案(2)|浏览(110)
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。有什么想法吗?

pgx2nnw8

pgx2nnw81#

QFileInfo::isWritable()不是用来检查打开的文件是否可写,而是检查当前用户对文件的权限。如果你只想看看打开文件的操作是否成功,请检查调用QFile::open()的返回值。如果返回true,则文件已准备好写入。如果返回false,请进行错误处理。
我不知道为什么isWritable()在你的情况下失败。可能是Windows认为文件已经打开,因此不能从另一个open()调用写入。如果你真的想检查权限,在打开文件之前调用isWritable()

wqlqzqxt

wqlqzqxt2#

尝试以管理员的身份运行你的程序(右键点击)。也许这个问题是由UAC引起的。

相关问题