我尝试使用QFile写入现有文件,该文件按预期工作。但是,问题是如果文件在Excel中打开,则从我的程序写入文件失败。
我尝试使用QFileInfo测试权限,并拥有该文件的所有读写权限。测试
bool opened = file-> open (QIODevice :: WriteOnly)
返回true。
使用notepad ++打开文件时,不会出现同样的问题。
如何检查文件是否已锁定且无法写入?
答案 0 :(得分:2)
Excel锁定其打开的文件以供独占使用。您无法写入打开的文件,移动或删除它。没有办法绕过这个锁。
答案 1 :(得分:1)
使用QFile :: write函数时,它返回写入的字节数,如果发生错误则返回-1。
如果从write函数检查返回代码,您应该可以使用它来确定该文件被另一个进程锁定。
调用QFile :: open会返回而不会出现错误,因为您仍然可以获得该文件的有效句柄,即使另一个进程已将其锁定,也无法同时写入该文件。