我是ANT的新手,在处理我需要通过Java代码阅读的静态文件时遇到一些麻烦。我有以下结构:
build
main
example
resository
SomeClass.class
data
data.json
src
example
repository
SomeClass.java
test
在SomeClass.java中我需要读取data.json
文件但是我在解析路径时遇到错误。我认为它与某种方式ant
有关。
public class SomeClass {
class SomeClass extends ArrayList<Quote> {}
public Quote[] all() {
String path = "../../../data/data.json";
Gson gson = new Gson();
try {
BufferedReader br = new BufferedReader(new FileReader(path));
return gson.fromJson(br, Quote[].class);
} catch (IOException e) {
e.printStackTrace();
}
return new Quote[]{};
}
}
我收到以下错误:
java.io.FileNotFoundException:
我认为自从ant将文件放在build
文件夹中,因此我可能需要将文件放在某处,我也尝试过,但我想我需要更多的帮助。
答案 0 :(得分:1)
相对路径是相对于执行目录计算的。
如果在项目根目录中执行ant
,
那么那里的相对路径是data/data.json
,而不是../../../data/data.json
。
获取“找不到文件”错误时, 在调试器中验证执行目录是件好事, 或者通过插入print语句,例如:
System.out.println(new File(".").getAbsolutePath());
从输出中,您将了解进程运行的目录中的faire和square, 并且您将能够计算出正确的相对路径。