Java不知道文件何时不存在[关闭]

Posted

技术标签:

【中文标题】Java不知道文件何时不存在[关闭]【英文标题】:Java does not know when file does NOT exist [closed] 【发布时间】:2011-05-09 04:51:36 【问题描述】:

Java 知道文件何时存在,因为它会打印出“找到文件”,但当文件不存在时,它不会打印出“找不到文件”

    File file = new File(filePath, "Test_1.exe");

    if (file.exists())
        System.out.println("File found");
    else
        System.out.println("File not found");
    

有人知道为什么吗?文件路径是正确的,因为我已经仔细检查了这一点。奇怪的是,如果文件不存在,它不会打印出来,但如果它存在,就会打印出来。

我也试过 if (!file.exists()) 不走运!

【问题讨论】:

如果 "File not found" 不存在,它肯定会为我打印出来。 尝试使用File#canRead() 检查您的应用程序是否有权读取它,也可能是这样。 可能有一个错误被您捕获并忽略了? '文件路径正确,因为我已经仔细检查过'。再检查一遍。显然是不正确的。 同意EJP,可能第一行就报错了。 【参考方案1】:

试试

try

    File file = new File(filePath, "Test_1.exe");

     if (file.exists())
     
          System.out.println("File found");
     
     else
     
            System.out.println("File not found");
      

catch(SecurityException se)

     se.printStackTrace();

【讨论】:

【参考方案2】:

尝试使用文件的完整路径。例如:

File file = new File(filePath, "c:/temp/Test_1.exe");

来自 javadocs:

相反,相对路径名必须根据从其他路径名中获取的信息来解释。默认情况下,java.io 包中的类总是根据当前用户目录解析相对路径名。此目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。

【讨论】:

以上是关于Java不知道文件何时不存在[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在不知道主体实体是不是存在的情况下创建依赖实体[关闭]

Apollo 如何足够聪明地知道何时合并,但不知道何时添加?

CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]

休眠直到文件存在/创建

Linux 和 Csharp,检查 Linux 中是不是不存在文件/文件夹,如果存在,则通过 Csharp SSH 运行 MKDIR - [关闭]

Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)