2

我尝试使用 QFile 写入现有文件,该文件按预期工作。但是,问题是如果文件在 Excel 中打开,从我的程序写入文件会失败。

我尝试使用 QFileInfo 测试权限并拥有文件的所有读写权限。考试

bool opened = file-> open (QIODevice :: WriteOnly) 

返回真。

使用 notepad++ 打开文件时不会出现同样的问题。

如何检查文件是否被锁定并且无法写入?

4

2 回答 2

2

Excel 锁定其打开的文件以供独占使用。您不能写入打开的文件、移动或删除它。没有办法绕过这个锁。

另请参阅:无论锁定状态如何,都写入锁定文件

于 2013-09-26T09:37:33.713 回答
1

当您使用 QFile::write 函数时,它返回写入的字节数,如果发生错误,则返回 -1。

如果您检查 write 函数的返回代码,您应该能够使用它来确定文件被另一个进程锁定。

调用 QFile::open 不会出错,因为您仍然可以获得文件的有效句柄,即使另一个进程已锁定它,从而阻止您同时对其进行写入。

于 2013-09-26T09:49:57.447 回答