Andriod 本地存储数据的几种方式

   我这里所说的数据值得是两种,一种是基本的数据类型,一种是对象。

  方法一:利用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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一步一台阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值