android实现对象写入XML,本地缓存

主要思路:保存时是将对象用Base64转换成String,然后保存,读取读取出来的String转换成对象。


保存代码如下:

public void setUserInfo(UserInfo mBean) {
    try {
        // 创建字节输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        // 创建对象输出流,并封装字节流
        ObjectOutputStream oos = new ObjectOutputStream(baos);
        // 将对象写入字节流
        oos.writeObject(mBean);
        // 将字节流编码成base64的字符窜
        String mBeanStr = new String(Base64.encodeBase64(baos.toByteArray()));
        //写入到本地
        ShareManager.setValue(KApplication.mContext, Constant.USER_INFO, mBeanStr);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

读取的代码如下:

public UserInfo getUserInfo() {
    UserInfo mBean = null;
    try {
        //读取本地缓存数据
        String userInfo = ShareManager.getValue(KApplication.mContext, Constant.USER_INFO);
        //读取字节
        byte[] base64 = Base64.decodeBase64(userInfo.getBytes());
        //封装到字节流
        ByteArrayInputStream bais = new ByteArrayInputStream(base64);
        //再次封装
        ObjectInputStream bis = new ObjectInputStream(bais);
        //转换成对象
        mBean = (UserInfo) bis.readObject();
    } catch (StreamCorruptedException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return mBean;
}

注意:保存的对象需要实现序列化接口,否则会抛异常。




猜你喜欢

转载自blog.csdn.net/u012977315/article/details/53118537
今日推荐