为了账号安全,请及时绑定邮箱和手机立即绑定

java.io.File.isFile() 在不同的线程中返回不同的值

java.io.File.isFile() 在不同的线程中返回不同的值

慕妹3242003 2023-06-14 16:29:39
我有一些代码执行要延迟运行。(比方说 10 秒后)。在此代码执行中,我需要检查提供的文件是否确实是“正常”文件,而不是例如目录。    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);我所期望的是计时器中的执行会像外部执行一样,但事实并非如此。这种行为有原因吗?
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

mikeb 和 VGR 都是对的。涉及删除附件的清理步骤。我没想过要检查文件是否仍然存在,因为我假设 f.isFile() 会抛出异常,但事实并非如此。

我删除/更改了清理,因此不会直接删除提供的文件。之后,计时器中的代码为 f.isFile() 返回正确的结果。


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信