使用ant build在java中读取静态文件

时间:2016-07-31 14:57:45

标签: java ant

我是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文件夹中,因此我可能需要将文件放在某处,我也尝试过,但我想我需要更多的帮助。

1 个答案:

答案 0 :(得分:1)

相对路径是相对于执行目录计算的。 如果在项目根目录中执行ant, 那么那里的相对路径是data/data.json,而不是../../../data/data.json

获取“找不到文件”错误时, 在调试器中验证执行目录是件好事, 或者通过插入print语句,例如:

System.out.println(new File(".").getAbsolutePath());

从输出中,您将了解进程运行的目录中的faire和square, 并且您将能够计算出正确的相对路径。