0

我试图检查给定目录位置是否存在文件。

File seacrhFile = new File("D:/input", contract.conf);
if (seacrhFile.exists()) {
  returnFile = seacrhFile;
} else {
  System.out.println("No such file exists");
}
reutrn returnFile;

这适用于D:/input目录方案,但如果我将目录位置更改为src/test/resources/input文件夹No such file exists,那么即使文件存在,我也会得到。

4

2 回答 2

1

如果你想访问
src/test/resources/input
你可能应该使用

System.getProperty("user.dir") + File.separator + "src/test/resources/input"

因为系统属性“user.dir”指向项目位置。

如果您只使用“src/test/resources/input”,您将得到您提到的异常,因为文件对象不会在项目位置“启动”。所以你必须手动指定它。

尽管如此,最好使用 getResource-Method 来检索项目中的不同资源,因为如果您使用 jar-File 运行项目,则需要调整以使“user.dir”正常工作。

只是 Classloader 的一个基本示例:

ClassLoader.getSystemClassLoader().getResource("test/resources/input");

这将返回一个 URL-Object,使用此对象,您可以使用 ...

URL filePath =  ClassLoader.getSystemClassLoader().getResource("test/resources/input");
File file = new File( filePath.toURI() );
于 2012-07-24T09:54:21.907 回答
0

删除 src 并重试。

于 2012-07-24T09:55:50.653 回答