我要延迟执行一些代码执行。 (让我们说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()返回正确的结果。

08-06 17:46