我正在尝试监视一个目录并通知文件更改(创建),我在 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();
....
}
}
}
我应该等待一段时间才能获得实际大小(如果是的话,如何匹配以及如何测试文件是否准备好读取)还是我错过了一些东西。
任何帮助将不胜感激。