我这里所说的数据值得是两种,一种是基本的数据类型,一种是对象。
方法一:利用SharedPreferences 中的Editor进行commit,这种方式只是适用于基本数据类型
Editor可以存储的类型如下图:
方法二:利用ObjectOutputStream提交,这种方式可以存储两种数据。
具体的调用函数如下图:
最后附上一个工具类,专门用于存储和读取文件的。只写了几种基本的数据类型,其他的可以类推。
package com.ldkj_bank.www.util;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.tencent.utils.Util.Statistic;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SpUtil {
static Context mContext;
public static void writeSpString(SharedPreferences sp, String key, String value) {
Editor editor = sp.edit();
editor.putString(key, value);
editor.commit();
}
public static String readSpString(SharedPreferences sp, String key, String defValue) {
return sp.getString(key, defValue);
}
public static void writeSpInt(SharedPreferences sp, String key, int value) {
Editor editor = sp.edit();
editor.putInt(key, value);
editor.commit();
}
public static int readSpInt(SharedPreferences sp, String key, int defValue) {
return sp.getInt(key, defValue);
}
public static void writeSpBoolean(SharedPreferences sp, String key, boolean value) {
Editor editor = sp.edit();
editor.putBoolean(key, value);
editor.commit();
}
public static boolean readSpBoolean(SharedPreferences sp, String key, boolean defValue) {
return sp.getBoolean(key, defValue);
}
public static void saveObject( Context mContext, Object obj,String name){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = mContext.openFileOutput(name, mContext.MODE_PRIVATE);
oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
} catch (Exception e) {
e.printStackTrace();
//这里是保存文件产生异常
} finally {
if (fos != null){
try {
fos.close();
} catch (IOException e) {
//fos流关闭异常
e.printStackTrace();
}
}
if (oos != null){
try {
oos.close();
} catch (IOException e) {
//oos流关闭异常
e.printStackTrace();
}
}
}
}
public static Object getObject( Context mContext, String name){
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = mContext.openFileInput(name);
ois = new ObjectInputStream(fis);
return ois.readObject();
} catch (Exception e) {
e.printStackTrace();
//这里是读取文件产生异常
} finally {
if (fis != null){
try {
fis.close();
} catch (IOException e) {
//fis流关闭异常
e.printStackTrace();
}
}
if (ois != null){
try {
ois.close();
} catch (IOException e) {
//ois流关闭异常
e.printStackTrace();
}
}
}
//读取产生异常,返回null
return null;
}
}
这里所说的Context和SharedPrefrents 传的值必须是同一个Activity才能实现存储和读取,否则会存进去会去不出来,所以最好在自己的项目的Activity基类里面加上这两个属性,并赋上值。
在基类的属性列表中增加:
protected Context mContext;
protected SharedPreferences cacheSp;
onCreate中增加
mContext = this;
cacheSp = getSharedPreferences("cache", Context.MODE_PRIVATE);