【问题标题】:recurring check, whether file exists or not定期检查,文件是否存在
【发布时间】:2013-04-30 11:28:34
【问题描述】:

如果我想检查文件是否存在,我会使用:

File file = new File("name of File");
if(file.exists()) { //do something}

但是我该怎么办,如果我想用它来检查安装:可以创建文件,例如5 或 10 分钟后:那么file.exists() 如何控制文件是否存在?

例如

  • 安装开始,文件不存在
  • 安装继续 5 分钟文件仍然不存在
  • 10 分钟后 - 创建文件 - 例如Installation.chk(文件已存在) 我的 if 语句现在为真

是否可以用 Java 创建它?如果是,怎么做?

【问题讨论】:

标签: java file nio2


【解决方案1】:

也许有更好的方法:

http://docs.oracle.com/javase/tutorial/essential/io/notification.html

不要循环你的exists(),让操作系统告诉你,如果有什么变化。

【讨论】:

    【解决方案2】:

    在处理文件系统时,您必须接受竞争条件的发生并为它们做好计划。

    您只能检查文件现在是否存在,而不能检查它是否会继续存在,因为可以挂载/弹出磁盘,超级用户帐户可以删除文件或取消链接或使父目录不可读。

    java.io 也不支持文件锁定。

    如果您需要检查某个软件是否已安装,您可以尽最大努力,但您不能阻止用户在您的软件运行时卸载其他软件。


    if(file.exists()) { /*do something*/}
    

    这本身很少有用。

    通常,结合文件类型和权限检查可以识别出更多的不良状态,而不仅仅是测试存在。

    file.isFile() && file.canRead()
    

    【讨论】:

    • @Amalgovinus,你确定吗?它必须通读目录,并且可能必须通读符号链接,具体取决于 LinkOptions,但我在文档中看不到任何内容表明它将检查普通文件的读取权限。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2013-07-17
    相关资源
    最近更新 更多