【发布时间】:2020-07-10 00:11:29
【问题描述】:
所以我试图将 HashMap 作为 JSON 文件保存到应用程序的内部存储中。这很好用,正如我在设备文件资源管理器中看到的那样,所有内容都已正确保存。然后,当我重新启动应用程序并从文件中读取时,它也可以工作,但是在这一次读取文件为空之后。当您保存一个空的 JSON 对象时,完全清空甚至没有一些“{}”。
public void writeNetworks(FileOutputStream fos) {
Log.d(TAG, "writeNetworks");
Gson gson = new GsonBuilder().create();
String json = gson.toJson(networks);
Log.d(TAG, json);
PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
out.println(json);
out.flush();
out.close();
}
public void readNetworks(FileInputStream fis) {
Log.d(TAG, "readNetworks");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
StringBuilder json = new StringBuilder();
String line;
while((line = in.readLine()) != null ) {
json.append(line);
}
in.close();
Log.d(TAG, json.toString());
Gson gson = new GsonBuilder().create();
Type typeOfHashMap = new TypeToken<Map<String, WrcUser>>() { }.getType();
networks = gson.fromJson(json.toString(), typeOfHashMap);
} catch (IOException e) {
e.printStackTrace();
}
}
有什么想法吗?
【问题讨论】:
-
把你写文件的代码也贴出来
-
是代码中的第一个方法。你的意思是我叫它的地方吗?
-
为什么在方法
readNetwork中使用while? -
我不确定 JSON 是否在不同的行上。
标签: java android json file android-studio