这个有点棘手。如果您可以控制或至少与复制文件的程序进行通信,那将是小菜一碟,但我猜这在 Windows 上是不可能的。不久前我不得不用SFU软件处理类似的问题,我通过循环尝试打开文件进行写入来解决它,直到它变得可用。
为避免循环时 CPU 使用率过高,可以以指数分布速率检查文件。
编辑一个可能的解决方案:
File fileToCopy = File(String pathname);
int sleepTime = 1000; // Sleep 1 second
while(!fileToCopy .canWrite()){
// Cannot write to file, windows still working on it
Sleep(sleepTime);
sleepTime *= 2; // Multiply sleep time by 2 (not really exponential but will do the trick)
if(sleepTime > 30000){
// Set a maximum sleep time to ensure we are not sleeping forever :)
sleepTime = 30000;
}
}
// Here, we have access to the file, go process it
processFile(fileToCopy);