SharedPreferences存储对象

最近用到了SharedPreferences,简单的String,int 什么都很很简单,但是我要存储的是一个对象啊,看提供的方法只能存储一些简单的数据类型,这个时候我就犯迷糊了。到处查资料最后解决了,贴出方法给共享。

这是存储

    public void save(OAuthV1 oAuth_1) {
        SharedPreferences preferences = getSharedPreferences("base64",
                MODE_PRIVATE);
        // 创建字节输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            // 创建对象输出流,并封装字节流
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            // 将对象写入字节流
            oos.writeObject(oAuth_1);
            // 将字节流编码成base64的字符窜
            String oAuth_Base64 = new String(Base64.encodeBase64(baos
                    .toByteArray()));
            Editor editor = preferences.edit();
            editor.putString("oAuth_1", oAuth_Base64);

            editor.commit();
        } catch (IOException e) {
            // TODO Auto-generated
        }
        Log.i("ok", "存储成功");
    }

 

然后是读取

    public OAuthV1 read() {
        OAuthV1 oAuth_1 = null;
        SharedPreferences preferences = getSharedPreferences("base64",
                MODE_PRIVATE);
        String productBase64 = preferences.getString("oAuth_1", "");
                
        //读取字节
        byte[] base64 = Base64.decodeBase64(productBase64.getBytes());
        
        //封装到字节流
        ByteArrayInputStream bais = new ByteArrayInputStream(base64);
        try {
            //再次封装
            ObjectInputStream bis = new ObjectInputStream(bais);
            try {
                //读取对象
                oAuth_1 = (OAuthV1) 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 oAuth_1;
    }

 

posted @ 2013-07-22 18:59  百水  阅读(735)  评论(0)    收藏  举报