我想将JSONObject
存储在一个文件中。
为此,我将Object转换为字符串,然后将其存储在一个文件中。
我使用的代码是:
String card_string = card_object.toString();
//card_object is the JSONObject that I want to store.
f = new File("/sdcard/myfolder/card3.Xcard");
//file 'f' is the file to which I want to store it.
FileWriter fw = new FileWriter(f);
fw.write(card_string);
fw.close();
代码按我的意愿运行。现在我想要从文件中检索该对象。
我该怎么办?我对使用什么来读取文件感到困惑?
InputStream
或FileReader
或BufferedReader
或者是什么。我是JAVA / android开发的新手。
请帮忙。有关在不同场景(如此)中使用的I / O功能的简单用语的详细说明是受欢迎的。我看过文档,但欢迎您提出建议。
答案 0 :(得分:4)
使用可以使用BufferedReader
和FileReader
:
File file = new File("/sdcard/myfolder/card3.Xcard");
StringBuilder text = new StringBuilder();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
} catch (IOException e) {
// do exception handling
} finally {
try { br.close(); } catch (Exception e) { }
}
此外,我建议您使用Environment.getExternalStorageDirectory();
来构建路径。这不是特定于设备的。
干杯!
答案 1 :(得分:4)
您可以使用此代码来读取文件。
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(
openFileInput("jsonfile")));
String line;
StringBuffer content = new StringBuffer();
char[] buffer = new char[1024];
int num;
while ((num = input.read(buffer)) > 0) {
content.append(buffer, 0, num);
}
JSONObject jsonObject = new JSONObject(content.toString());
}catch (IOException e) {...}
然后你可以使用你的jsonObject:
从JSON Object获取特定字符串
String name = jsonObject.getString("name");
获取特定的int
int id = jsonObject.getInt("id");
获取特定数组
JSONArray jArray = jsonObject.getJSONArray("listMessages");
从数组中获取项目
JSONObject msg = jArray.getJSONObject(1);
int id_message = msg.getInt("id_message");
答案 2 :(得分:2)
File contentfile = new File(filePath);
@SuppressWarnings("resource")
FileInputStream readJsonTextfile = new FileInputStream(contentfile);
Reader ContetnUrlJson = new InputStreamReader(readJsonTextfile);