FileReader 无法在 Java 项目中找到该文件

Arc*_*ora 0 java file

我正在使用 Tomcat 7 服务器在 Mac OS 上开发 Java EE 应用程序。我的项目结构是这样的 - 在此处输入图片说明

下面是我用来读取 JSON 文件的函数 - 20180507.json

private void getCurrencyJSON(){
        JSONParser jsonParser = new JSONParser();
        try 
        {
            System.out.println(new File(".").getAbsoluteFile());
            FileReader reader = new FileReader("/data/20180507.json");  
            //Read JSON file
            Object obj = jsonParser.parse(reader);
            JSONArray currencyList = (JSONArray) obj;
            System.out.println(currencyList);           

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (org.json.simple.parser.ParseException e) {
            e.printStackTrace();
        }   
    }
Run Code Online (Sandbox Code Playgroud)

这会导致java.io.FileNotFoundException: /resources/20180507.json (No such file or directory)异常。此外,System.out.println(new File(".").getAbsoluteFile())结果在/private/var/folders/0z/88rzgp7s4h3d18zzp4btcr2h3x133x/T/AppTranslocation/89F63404-971F-4AB6-9727-B1BD6E9F4A8D/d/eclipse/Eclipse.app/Contents/MacOS/.

我如何阅读这个文件?另外,是否有资源可以让我更多地了解文件路径在 Java 中的工作原理?

提前致谢

ruh*_*hul 5

您应该将数据存储到资源文件夹中。喜欢:

src
|__main
   |__java
   |  |__....
   |
   |__resources
      |__data
         |__20180507.json
Run Code Online (Sandbox Code Playgroud)

保存后:您可以尝试以下代码从资源文件夹加载它:

JSONParser parser = new JSONParser(this.getClass().getResourceAsStream("data/20180507.json"));
Run Code Online (Sandbox Code Playgroud)