0

有两个QFile-pointer指向同一个文件,它们属于不同的线程。一个将数据写入文件,另一个读取。但我只想进行一项操作,读取或写入。

if(!this->file->exists()) {
   qDebug()<<"The file is not exists";
}
if(this->file->isOpen()) {
   qDebug()<<"The file is open";
}

让我换一种说法:如何检查文件是否打开?

我测试file.isOpen()?它不起作用。我怎样才能做到这一点?

4

1 回答 1

2

在我看来,您正在尝试使用 isOpen 来查看另一个线程是否打开了相同的文件。AFAIK isOpen 只是告诉您当前 QFile 实例是否打开了文件,而不是其他 QFile 实例。

我知道能够防止不同线程读取和/或写入同一个文件的唯一方法是使用文件锁定。

不太确定 Qt 是否有办法做到这一点,而不必深入研究更多依赖于操作系统的 API。

于 2012-10-07T07:44:07.240 回答