android保存读取对象 SharedPreferences方式

    xiaoxiao2021-03-25  88

    使用示例

    public Music music; //要读取和保存的对象 saveObject(music,"Music"); //保存对象 music=(Music)readObject("Music"); //读取对象 public class Music implements Serializable{ private static final long serialVersionUID = 1L; }

    需要下载这个包commons-codec-1.4.jar,并导入。这里有下载

    public Object readObject(String key) { SharedPreferences preferences = getSharedPreferences("base64", MODE_PRIVATE); String productBase64 = preferences.getString(key, ""); if (productBase64 == "") { //init(); return null; } Object o = null; //读取字节 byte[] base64 = Base64.decodeBase64(productBase64.getBytes()); //封装到字节流 ByteArrayInputStream bais = new ByteArrayInputStream(base64); try { //再次封装 ObjectInputStream bis = new ObjectInputStream(bais); try { //读取对象 o = (Object) bis.readObject(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return o; } public void saveObject(Object o,String key) { SharedPreferences preferences = getSharedPreferences("base64", MODE_PRIVATE); //创建字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { //创建对象输出流,并封装字节流 ObjectOutputStream oos = new ObjectOutputStream(baos); //将对象写入字节流 oos.writeObject(o); //将字节流编码成base64的字符窜 String productBase64 = new String(Base64.encodeBase64(baos .toByteArray())); Editor editor = preferences.edit(); editor.putString(key, productBase64); editor.commit(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.i("ok", "存储成功"); }

    转载请注明原文地址: https://ju.6miu.com/read-17224.html

    最新回复(0)