我怎样才能转换我的Map<Integer, String
> to byte[]
,然后将其写入内部存储器?我目前有:
try {
FileOutputStream fos = context.openFileOutput(Const.FILE_CATEGORIES, Context.MODE_PRIVATE);
fos.write(null);
} catch (FileNotFoundException e) {
// reload and create the file again
}
但是..我不知道如何获得Map
转换为正确的格式,然后在需要再次加载时将其解码回原始格式。我需要每周重新创建一次该文件,并在应用程序启动时加载它。
使用java中的序列化,您可以轻松解析任何可序列化的
对象到字节流。尝试使用 ObjectInputStream 和
对象输出流。
使用json来恢复。您可以使用 google-gson 来转换 Java
对象到 JSON,反之亦然。
在android中使用Parcel。 android.os.Parcel 类旨在传递数据
在android(activity,service)中的组件之间,但您仍然可以使用它来进行数据持久化。
请记住不要将数据发送到互联网,因为不同
平台可能有不同的算法来进行解析。
我写了一个序列化的demo,你试试吧。
public static void main(String[] args) throws Exception {
// Create raw data.
Map<Integer, String> data = new HashMap<Integer, String>();
data.put(1, "hello");
data.put(2, "world");
System.out.println(data.toString());
// Convert Map to byte array
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(data);
// Parse byte array to Map
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
Map<Integer, String> data2 = (Map<Integer, String>) in.readObject();
System.out.println(data2.toString());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)