ディレクトリを監視し、ファイルの変更 (作成) を通知しようとしています。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();
....
}
}
}
実際のサイズを取得するのに時間の経過を待つ必要がありますか(はいの場合、どのように一致し、ファイルを読み取る準備ができているかをテストするか)、それとも何かを見逃しましたか。
どんな助けでも大歓迎です。