我要延迟执行一些代码执行。 (让我们说10s之后)。在此代码执行中,我需要检查所提供的文件是否确实是“普通”文件,而不是目录。
for (File f : pAttachments) {
f.isFile(); // returns true, if file is a "normal" file
}
Timer tx = new java.util.Timer();
tx.schedule(new java.util.TimerTask() {
@Override
public void run() {
for (File f : pAttachments) {
f.isFile(); // returns false, even if file is a "normal" file
}
tx.cancel();
}
}, 10000);
我期望的是,计时器中的执行与外部执行类似,但事实并非如此。有这种现象的原因吗?
最佳答案
mikeb和VGR都正确。涉及清理步骤,删除了附件。我没有想到要检查文件是否仍然存在,因为我认为f.isFile()会抛出异常,但事实并非如此。
我删除/更改了清理程序,因此不会直接删除提供的文件。之后,计时器中的代码将为f.isFile()返回正确的结果。