文件存在检查不起作用
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
...以上是关于文件存在检查不起作用的主要内容,如果未能解决你的问题,请参考以下文章