我正在开发一个简单的应用程序,我试图了解如何使用 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关于这个问题,所以我假设你正在尝试编写一个 Android 应用程序。如果是这样,这将不起作用:
String path = "C:\\Users\\My Name\\IntelliJIDEAProjects\\Intereview\\app\\src\\main\\res\\Data\\dataStructures.json";
根据该路径,我的猜测是您正在尝试将 JSON 文件与您的应用程序打包。在这种情况下,您也无法在 res/
下创建随机目录。即使此 JSON 文件位于正确的 res/
目录(例如 res/raw/
)中,您也无法通过 FileReader
访问它。它是您的开发计算机上的一个文件。它不是 Android 设备上的文件。
您的两个主要选择是:
将该 JSON 文件从
res/Data/
移至res/raw/
。然后,使用getResources().openRawResource(R.raw.dataStructures)
获取 JSON 上的InputStream
。将该 JSON 文件从
res/Data/
移至assets/
。然后,使用getAssets().open("dataStructures.json")
获取 JSON 上的InputStream
。
请注意,getResources()
和 getAssets()
是 Context
及其子类(例如 Activity
)上的方法>.
关于java - 从 json 文件读取,FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39057833/