使用ant构建读取java中的静态文件
我是ANT新手,在处理需要通过Java代码读取的静态文件时遇到一些问题。我的结构如下:使用ant构建读取java中的静态文件,java,ant,Java,Ant,我是ANT新手,在处理需要通过Java代码读取的静态文件时遇到一些问题。我的结构如下: build main example resository SomeClass.class data data.json src example repository SomeClass.java test 在SomeClass.java中,我需要读取data.json文件,但解析路径时出错。我认为它与蚂蚁有某种联系 public c
build
main
example
resository
SomeClass.class
data
data.json
src
example
repository
SomeClass.java
test
在SomeClass.java中,我需要读取data.json
文件,但解析路径时出错。我认为它与蚂蚁有某种联系
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[]{};
}
}
我想,由于ant将文件放在
build
文件夹中,因此我可能也需要将文件放在那里的某个位置,我也尝试过这样做,但我想我需要更多帮助。相对路径是从执行目录中相对计算出来的。
如果在项目根目录中执行ant
,
然后从那里开始的相对路径是data/data.json
,而不是。/../../../data/data.json
获取“未找到文件”错误时,
最好在调试器中验证执行目录,
或通过插入打印语句,例如:
System.out.println(new File(".").getAbsolutePath());
从输出中,您将知道进程运行在哪个目录中,
您将能够计算出正确的相对路径。我不知道我已经浪费了多少时间来寻找这个,为什么java要对我这样做。还有一件事,在生产中,我希望所有东西都放在一个文件中,我是否可以将数据文件放在build文件夹中并从那里引用它?这将取决于运行程序的进程的执行目录。
System.out.println(new File(".").getAbsolutePath());