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