我的观点是下一个。我只是在登录完成后从服务器下载了一个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;
}
拜托,有人可以帮我解决这个问题吗?我如何修复或有人知道另一种方法来读取文件?
谢谢你的时间。
答案 0 :(得分:0)
您必须阅读用于保存文件的file system
(来自internal
或external
存储媒体的文件)。
资产与您嵌入应用程序的文件一起使用,即将其放在res/raw
或类似文件夹中,然后构建应用程序。
不要这样做
InputStream is = getAssets().open("news.json");
如果您已将文件存储在应用程序的沙盒内存空间中。使用适当的File
类例程。