" FileNotFoundException异常"尝试从Android Studio {J 44}中读取JSON文件时

时间:2018-02-04 17:52:18

标签: java android-studio

我正在尝试使用Android Studio中的JSON文件构建包含对象的列表。 JSON文件" compliments.json"放置在地图app / src / main / res。

我一直得到一个" java.io.FileNotFoundException"当我试着读这个文件的时候。我尝试了很多类似线程的人建议的解决方案。 (我清除了缓存,我将文件更改为另一个地图,我尝试了一种新的阅读方式),但它们似乎都没有工作。这是我用来在文件中读取的代码:

public static ComplimentCatalog read(Context context) throws JSONException, IOException {
        ComplimentCatalog ul = new ComplimentCatalog();

        JsonParser parser = new JsonParser();

        AssetManager assetManager = context.getAssets();
        InputStream ims = assetManager.open("compliments.json");
        Reader reader1 = new InputStreamReader(ims);

        JsonElement rootElement = parser.parse(reader1);
        JsonObject rootObject = rootElement.getAsJsonObject();
        JsonArray uList = rootObject.getAsJsonArray("complimentList");

        for(int i = 0; i < uList.size(); i++) {
            JsonObject jsnComp = uList.get(i).getAsJsonObject();
            ul.add(Compliment.read(jsnComp));
        }
        System.out.println("UL:" + ul.toString());
        return ul;
    }

这是json:

    {
  "complimentList":[
    {
      "text": "You look good today!"
    },
    {
      "text": "Do you have a new T-Shirt?"
    }
  ]
}

如果您需要任何其他文件/信息,我很乐意提供。

2 个答案:

答案 0 :(得分:1)

如果您打算使用AssetManager assetManager = context.getAssets();您的文件应放在app/src/main/assets/

答案 1 :(得分:0)

您应该创建一个名为assets的新文件夹,并将compliments.json放在该文件夹中。

AssetManager将在assets文件夹中查找文件。

enter image description here