2

QFile を使用して既存のファイルに書き込もうとしましたが、期待どおりに動作します。ただし、問題は、ファイルが Excel で開かれている場合、プログラムからのファイルへの書き込みに失敗することです。

QFileInfo を使用してアクセス許可をテストし、ファイルに対するすべての読み取りおよび書き込みアクセス許可を取得しようとしました。テスト

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

true を返します。

notepad++でファイルを開いた場合は同様の問題は発生しません。

ファイルがロックされていて書き込めないかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

1

QFile::write 関数を使用すると、書き込まれたバイト数が返されます。エラーが発生した場合は -1 が返されます。

書き込み関数からの戻りコードを確認すると、それを使用して、ファイルが別のプロセスによってロックされていることを判断できるはずです。

QFile::open を呼び出すとエラーなしで返されます。これは、別のプロセスがファイルをロックしていて、同時にファイルに書き込むことができなくても、ファイルへの有効なハンドルを取得できるためです。

于 2013-09-26T09:49:57.447 に答える