文件存在检查不起作用

Posted

技术标签:

【中文标题】文件存在检查不起作用【英文标题】: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 让我绊倒了好几次。 【参考方案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...

以上是关于文件存在检查不起作用的主要内容,如果未能解决你的问题,请参考以下文章

检查 Laravel 中是不是存在记录不起作用

检查 localStorage 项目是不是存在不起作用

MYSQL:检查表是不是存在不起作用

使用 DFS 检查二叉树中是不是存在路径不起作用

检查数组中是不是存在迭代器时,array.includes 不起作用[重复]

检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel