数据保存类型管理

package com.woqi.caigou.utils;

 

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.text.TextUtils;

import android.util.Base64;

 

 

import com.google.gson.Gson;

 

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.List;

 

import org.json.JSONArray;

import org.json.JSONException;

 

/**

 * --------------------------------------------

 * 描 述 :

 * 1.SharedPreferences工具类

 * 封装了对Sp数据存储的基本操作

 * -------------------------------------------

 */

public class SpUtils {

    private final static String SP_NAME = "share_data";

    private static SharedPreferences sp;

 

    private static SharedPreferences getSp(Context context) {

        if (sp == null) {

            sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);

        }

        return sp;

    }

 

    /**

     * 获取boolean 数据

     *

     * @param context

     * @param key

     * @return 如果没有值,返回false

     */

    public static boolean getBoolean(Context context, String key) {

        SharedPreferences sp = getSp(context);

        return sp.getBoolean(key, false);

    }

 

    /**

     * 获取boolean 数据

     *

     * @param context

     * @param key

     * @param defValue

     * @return

     */

    public static boolean getBoolean(Context context, String key, boolean defValue) {

        SharedPreferences sp = getSp(context);

        return sp.getBoolean(key, defValue);

    }

 

    /**

     * 存boolean缓存

     *

     * @param context

     * @param key

     * @param value

     */

    public static void setBoolean(Context context, String key, boolean value) {

        SharedPreferences sp = getSp(context);

        Editor editor = sp.edit();

        editor.putBoolean(key, value);

        editor.commit();

    }

 

    /**

     * 获取String 数据

     *

     * @param context

     * @param key

     * @return 如果没有值,返回null

     */

    public static String getString(Context context, String key) {

        SharedPreferences sp = getSp(context);

        return sp.getString(key, null);

    }

 

    /**

     * 获取String 数据

     *

     * @param context

     * @param key

     * @param defValue

     * @return

     */

    public static String getString(Context context, String key, String defValue) {

        SharedPreferences sp = getSp(context);

        return sp.getString(key, defValue);

    }

 

    /**

     * 存String缓存

     *

     * @param context

     * @param key

     * @param value

     */

    public static void setString(Context context, String key, String value) {

        SharedPreferences sp = getSp(context);

        Editor editor = sp.edit();

        editor.putString(key, value);

        editor.commit();

    }

 

    /**

     * 获取int 数据

     *

     * @param context

     * @param key

     * @return 如果没有值,返回-1

     */

    public static int getInt(Context context, String key) {

        SharedPreferences sp = getSp(context);

        return sp.getInt(key, -1);

    }

 

    /**

     * 获取int 数据

     *

     * @param context

     * @param key

     * @param defValue

     * @return

     */

    public static int getInt(Context context, String key, int defValue) {

        SharedPreferences sp = getSp(context);

        return sp.getInt(key, defValue);

    }

 

    /**

     * 存int缓存

     *

     * @param context

     * @param key

     * @param value

     */

    public static void setInt(Context context, String key, int value) {

        SharedPreferences sp = getSp(context);

        Editor editor = sp.edit();

        editor.putInt(key, value);

        editor.commit();

    }

 

 

    /**

     * 获取int 数据

     *

     * @param context

     * @param key

     * @return 如果没有值,返回-1

     */

    public static long getLong(Context context, String key) {

        SharedPreferences sp = getSp(context);

        return sp.getLong(key, -1);

    }

 

    /**

     * 获取int 数据

     *

     * @param context

     * @param key

     * @param defValue

     * @return

     */

    public static long getLong(Context context, String key, long defValue) {

        SharedPreferences sp = getSp(context);

        return sp.getLong(key, defValue);

    }

 

    /**

     * 存int缓存

     *

     * @param context

     * @param key

     * @param value

     */

    public static void setLong(Context context, String key, long value) {

        SharedPreferences sp = getSp(context);

        Editor editor = sp.edit();

        editor.putLong(key, value);

        editor.commit();

    }

 

    public static float getFloat(Context context, String key) {

        SharedPreferences sp = getSp(context);

        return sp.getFloat(key, 0);

    }

 

    /**

     * 获取int 数据

     *

     * @param context

     * @param key

     * @param defValue

     * @return

     */

    public static float getFloat(Context context, String key, float defValue) {

        SharedPreferences sp = getSp(context);

        return sp.getFloat(key, defValue);

    }

 

    /**

     * 存int缓存

     *

     * @param context

     * @param key

     * @param value

     */

    public static void setFloat(Context context, String key, float value) {

        SharedPreferences sp = getSp(context);

        Editor editor = sp.edit();

        editor.putFloat(key, value);

        editor.commit();

    }

 

    /**

     * 保存对象

     *

     * @param context

     * @param object  保存的对象

     */

    public static void setObject(Context context, Object object, String key) throws Exception{

        String strJson = "";

        Gson gson = new Gson();

        strJson = gson.toJson(object);

        SpUtils.setString(context, key,strJson);

    }

 

    /**

     * 获取对象

     *

     * @param context

     * @param key

     * @return

     */

    public static Object getObject(Context context, String key, Class clazz) throws Exception{

        Object obj = null;

        String str = getSp(context).getString(key, "");

        if (!TextUtils.isEmpty(str)) {

            Gson gson = new Gson();

            obj = (Object) gson.fromJson(str, clazz);

        }

        return obj;

    }

 

 

    /**

     * 保存List对象集合

     * @param context

     * @param key

     * @param datas

     */

    public static void setListObj(Context context, String key, List<?> datas) {

        JSONArray mJsonArray = new JSONArray();

for (int i = 0; i < datas.size(); i++) {

Object bean = datas.get(i);

mJsonArray.put(bean);

}

Editor editor = getSp(context).edit();

editor.putString(key, mJsonArray.toString());

editor.commit();

}

 

 

    /**

     * 获取本地List持久化数据

     *

     * @paramcontext

     * @paramkey

     * @return

     */

    public static List<?> getListObj(Context context , String key ){

List<Object> list = new ArrayList<>();

String result = getSp(context).getString(key, "");

try {

JSONArray jsonArray = new JSONArray(result);

for(int i = 0; i <jsonArray.length(); i++){

Object bean = jsonArray.get(i);

list.add(bean);

}

} catch (JSONException e) {

e.printStackTrace();

 

}

return list;

}

    public static String setListString(List<Object> list)

            throws IOException {

        // 实例化一个ByteArrayOutputStream对象,用来装载压缩后的字节文件。

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        // 然后将得到的字符数据装载到ObjectOutputStream

        ObjectOutputStream objectOutputStream = new ObjectOutputStream(

                byteArrayOutputStream);

        // writeObject 方法负责写入特定类的对象的状态,以便相应的 readObject 方法可以还原它

        objectOutputStream.writeObject(list);

        // 最后,用Base64.encode将字节文件转换成Base64编码保存在String中

        String SceneListString = new String(Base64.encode(

                byteArrayOutputStream.toByteArray(), Base64.DEFAULT));

        // 关闭objectOutputStream

        objectOutputStream.close();

        return SceneListString;

    }

 

    @SuppressWarnings("unchecked")

    public static List<Object> getListString(String string) throws StreamCorruptedException, IOException,

            ClassNotFoundException {

        byte[] mobileBytes = Base64.decode(string.getBytes(),Base64.DEFAULT);

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(mobileBytes);

        ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);

        List SceneList = (List) objectInputStream.readObject();

        objectInputStream.close();

        return SceneList;

    }

 

    /**

     * 保存list 数据

     * @param context

     * @param list

     * @param key

     */

    public static void setListObj(Context context , List list , String key){

        Editor editor = getSp(context).edit();

        try {

            String str = setListString(list);

            editor.putString(key , str);

            editor.commit();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

 

 

 

 

    /**

     * 移除某一个key所对应的值

     *

     * @param context

     * @param key

     */

    public static void remove(Context context, String key) {

        Editor editor = getSp(context).edit();

        editor.remove(key);

        editor.commit();

    }

 

    /**

     * 移除Sp文件里面的所有数据

     *

     * @param context

     */

    public static void clear(Context context) {

        Editor editor = getSp(context).edit();

        editor.clear();

        editor.commit();

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值