我是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:
我想既然它把文件放在build
文件夹中,所以我可能也需要把我的文件放在那里的某个地方,我也试过了,但我想我需要更多的帮助。
从执行目录计算相对路径。如果在项目根目录中执行CCD_ 4,则从那里开始的相对路径是data/data.json
而不是../../../data/data.json
。
当得到"找不到文件"错误时,最好在调试器中验证执行目录,或者通过插入打印语句,例如:
System.out.println(new File(".").getAbsolutePath());
从输出中,您将知道进程运行在哪个目录中,并且您将能够计算出正确的相对路径。