package com.example.atest; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.StreamCorruptedException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.codec.binary.Base64; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { TextView tv; SharedPreferences preferences; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.aaa); List<Map> list=new ArrayList<Map>(); for(int i=0;i<3;i++){ Map map=new HashMap(); map.put(1, true); map.put(2, "abcbd"); map.put(3, "dsa"); list.add(map); } this.saveMap(list); List<Map> list3=this.readMap(); String s=""; for(int i=0;i<3;i++){ Map map=list3.get(i); s+=""+map.get(1)+map.get(2)+map.get(3); } tv.setText(s); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void saveMap(List<Map> maps) { String keyName=""; preferences = getSharedPreferences("abc", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE) ; // 创建字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { // 创建对象输出流,并封装字节流 ObjectOutputStream oos = new ObjectOutputStream(baos); // 将对象写入字节流 oos.writeObject(maps); // 将字节流编码成base64的字符窜 String map_Base64 = new String(Base64.encodeBase64(baos .toByteArray())); Editor editor = preferences.edit(); editor.putString("abc", map_Base64); editor.commit(); } catch (IOException e) { // TODO Auto-generated } Log.i("ok", "存储成功"); } public List<Map> readMap() { List<Map> list2 = null; preferences = getSharedPreferences("abc", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE) ; String mapBase64 = preferences.getString("abc", ""); //读取字节 byte[] base64 = Base64.decodeBase64(mapBase64.getBytes()); //封装到字节流 ByteArrayInputStream bais = new ByteArrayInputStream(base64); try { //再次封装 ObjectInputStream bis = new ObjectInputStream(bais); try { //读取对象 list2 = (List<Map>) 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 list2; } }
记得下载commons-codec-1.4.jar这个包