从不同的Activity(Android)打开JSON-File InternalStorage

时间:2014-11-15 20:55:41

标签: android file android-activity

我的观点是下一个。我只是在登录完成后从服务器下载了一个json文件。我用活动login.class中的下一个代码保存它:

JSONObject json2 = jsonParser2.getJSONFromUrl(URL);
//3
try {
  FileOutputStream fos = openFileOutput("news.json", Context.MODE_PRIVATE);
  fos.write(json2.toString().getBytes());
  fos.close();
} catch (IOException e) {
  e.printStackTrace();
}

我只需检入/data/data/myapp/files/news.json,然后使用正确的数据创建文件。

我的问题出在下一个活动(不同的活动)。在这一个我想读取文件并将其放在列表视图中,但android模拟器/设备在尝试访问该文件时崩溃。 (这是我的代码):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_noticias);
    try {
      JSONObject obj = new JSONObject(loadJSONFromAsset());
    } catch (JSONException e) {
      e.printStackTrace(); 
    }
}


public String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("news.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");

    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}

拜托,有人可以帮我解决这个问题吗?我如何修复或有人知道另一种方法来读取文件?

谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

您必须阅读用于保存文件的file system(来自internalexternal存储媒体的文件)。

资产与您嵌入应用程序的文件一起使用,即将其放在res/raw或类似文件夹中,然后构建应用程序。

不要这样做

InputStream is = getAssets().open("news.json");

如果您已将文件存储在应用程序的沙盒内存空间中。使用适当的File类例程。