java - 从 json 文件读取,FileNotFoundException

标签 java android json filereader filenotfoundexception

我正在开发一个简单的应用程序,我试图了解如何使用 json 解析器读取 json 文件。我编写了一个简单的 json 文件并将其放在我的目录之一中。然后我使用正确的时钟来获取路径,并编写了以下代码:

public void myParser() {
    JSONParser parser = new JSONParser();

    String path = "C:\\Users\\My Name\\IntelliJIDEAProjects\\Intereview\\app\\src\\main\\res\\Data\\dataStructures.json";

    try{
        JSONArray topics = (JSONArray)parser.parse(new FileReader(path));
        for(int i=0;i<topics.length();i++) {
            JSONObject object = topics.getJSONObject(i);
            String title = object.optString("title").toString();
            Log.i(TAG,title);
        }

    }

    catch(JSONException e) {
        Log.e("Internal Problem", e.getMessage());
    } catch (ParseException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


}

出于某种原因,我在运行应用程序时收到此错误:

java.io.FileNotFoundException: C:\Users\My Name\IntelliJIDEAProjects\Intereview\app\src\main\res\Data\dataStructures.json: open failed: ENOENT (No such file or directory)

这背后的原因可能是什么?过去几个小时我一直在研究这个问题,但我就是不明白。 谢谢

最佳答案

您有关于这个问题,所以我假设你正在尝试编写一个 Android 应用程序。如果是这样,这将不起作用:

String path = "C:\\Users\\My Name\\IntelliJIDEAProjects\\Intereview\\app\\src\\main\\res\\Data\\dataStructures.json";

根据该路径,我的猜测是您正在尝试将 JSON 文件与您的应用程序打包。在这种情况下,您也无法在 res/ 下创建随机目录。即使此 JSON 文件位于正确的 res/ 目录(例如 res/raw/)中,您也无法通过 FileReader 访问它。它是您的开发计算机上的一个文件。它不是 Android 设备上的文件。

您的两个主要选择是:

  1. 将该 JSON 文件从 res/Data/ 移至 res/raw/。然后,使用 getResources().openRawResource(R.raw.dataStructures) 获取 JSON 上的 InputStream

  2. 将该 JSON 文件从 res/Data/ 移至 assets/。然后,使用 getAssets().open("dataStructures.json") 获取 JSON 上的 InputStream

请注意,getResources()getAssets()Context 及其子类(例如 Activity)上的方法>.

关于java - 从 json 文件读取,FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39057833/

相关文章:

Java - 二维阵列板计数器

java - 预期状态 :<200> but was:<404> in spring test

javascript 访问 json 对象

javascript - 如果 JSON 在 <table> 中返回空显示消息

javascript - 加载位于根目录之外的 json 和图像

java - JMenuItem 快捷键 Ctrl-C/Ctrl-V 或 Ctrl-Insert/Shift-Insert 不再起作用

java - 如何从字符串名称获取 Hibernate 实体类

android - 如何让路线绘制更高效?

android - Unity Android - Facebook 集成 : missing Debug Hashkey

android - AndroidManifest.xml 文件的问题