【问题标题】:File exists check does not work文件存在检查不起作用
【发布时间】:2013-06-26 11:38:26
【问题描述】:

这是我的代码:

String path = "/src/cst/org/main/data/data.txt";
    File f = new File( path );
    if( f.exists() ) { 
        yesorno = true;
        System.out.println( "File exists: " + yesorno );
    } else {
        yesorno = false;
        System.out.println( "File does not exist: " + yesorno );
    }

当我运行它时,我总是得到“文件不存在...”,即使文件确实存在。如果我输入完整路径(C:/User/....)它可以工作,但我想通过缩短代码让它工作。

我知道这条路径实际上有效,因为该方法在另一个类上找到了我的图片 (.png)。我必须添加一些东西,因为它是 .txt 吗?

【问题讨论】:

  • 如果你输入/src/...它是一个绝对路径...在Windows机器上,它保证存在。
  • 但是当我删除/src/它仍然找不到我的文件D:
  • @fge:实际上,没有。它将采用当前驱动器上的绝对路径。它可能存在 - 但它不会是“C:\Users\...”,除非涉及到连接。
  • @fge:不一定;这将匹配C:\src\...
  • 你确定你知道你的执行目录是什么吗?如果您使用的是 IDE,我一定会检查一下。 Eclipse 让我绊倒了好几次。

标签: java file-exists


【解决方案1】:

是的,因为您没有正确执行此操作,您想提供文件的完整路径。
使用:

String path=getClass().getResource("/path/to/file").toString().replace("file:/", "");

【讨论】:

  • 这将返回相对于所用类的路径。这也可能不起作用。
  • 这应该可以工作,因为 text 文件放置在您的一个包中。我只是试着这样做,它的工作,也许你没有做对。
  • 但是不行:String path = getClass().getResource("/cst/org/main/data/data.txt").toString(); File f = new File( path );
  • @ColdStormy:我遇到了同样的问题,请参阅编辑后的答案,这应该可以。
  • 不会这样做。您假设该资源实际上是一个文件资源。鉴于getResource 将在资源不存在时返回null,我将使用它...并读取资源,使用getResourceAsStream...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 2018-02-12
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多