猿问

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

我正在使用 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();

        }   

    }

这会导致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 中的工作原理?


提前致谢


德玛西亚99
浏览 164回答 2
2回答

白猪掌柜的

您应该将数据存储到资源文件夹中。喜欢:src |__main    |__java    |  |__....    |    |__resources       |__data          |__20180507.json保存后:您可以尝试使用以下代码从资源文件夹加载它:JSONParser parser = new JSONParser(this.getClass().getResourceAsStream("data/20180507.json"));

翻过高山走不出你

记得使用:FileReader reader = new FileReader("data/20180507.json");而不是“/data/20180507.json” ,因为这是根 (/)目录中“数据”文件夹的路径。也请尝试将您的“数据”目录放在“资源”文件夹中。使用 Eclipse 构建应用程序时,资源文件夹内容在编译后与类相邻放置。其中任何一个都可以解决您的问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答