0

ディレクトリを監視し、ファイルの変更 (作成) を通知しようとしています。Windows 7 と Ubuntu 12.04 で仮想マシン (VirtualBox) をゲストとして使用しています。ファイルが監視フォルダーに追加されたときに、存在をテストします。このファイルのサイズを取得して後で操作する場合、問題は次のとおりです。ファイルが存在し、サイズがゼロでないにもかかわらず、サイズとして 0 を返すことがあります。これが私のコードです。

void Watcher::OnFileChanged (char* FileBaseName)
{

    QDir watchDir(RootToWatch);
    QString fileN="";
    fileN=QString::fromLocal8Bit(FileBaseName);
    QFileInfo file(RootToWatch+"/"+fileN);
    qDebug()<<"Watcher::OnFileChanged "<<fileN;

    try
       {
       if(file.exists())
       {
           qDebug()<<"FileWatcher::OnFileChanged "<<fileN<<"exists";
           qDebug()<<"OnFileChanged:fileName "<<file.fileName()
                   <<"\nOnFileChanged File().size"<<QFile(fileN).size()
                   <<"\nOnFileChanged QFileInfo Size:"<<file.size();
 ....
       }
       }
}

実際のサイズを取得するのに時間の経過を待つ必要がありますか(はいの場合、どのように一致し、ファイルを読み取る準備ができているかをテストするか)、それとも何かを見逃しましたか。

どんな助けでも大歓迎です。

4

1 に答える 1