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();
}
}
相关推荐
本项目"接收串口数据并将数据保存"是针对数据采集卡的一种实践应用,其目标是实时接收并记录从串口接收到的数据。 1. **串口通信基础** - **串口类型**:常见的串口有RS-232、RS-485和USB转串口等,其中RS-232是最...
本主题将深入探讨如何在LabVIEW中实现数据保存至xls文件格式,这是一种常见的电子表格格式,广泛应用于数据管理和共享。 首先,理解LabVIEW的数据结构至关重要。LabVIEW是一种基于图形化编程语言,其数据以“数据框...
综上所述,这个“数据保存.vi”可能演示了如何在LabVIEW中使用相应的函数和控件将各种类型的数据(可能是实验结果、测量值等)保存到TXT文件中,这对于数据记录和分析非常有用。通过学习和理解这个VI,用户可以掌握...
TwinCAT 2.0为用户提供了多种本地数据保存的方式,包括NOVRAM区、WTC文件、Persistant文件、XML文件和二进制文件。每种保存方式都有其特定的硬件和软件要求,以及不同的难易程度和对PLC资源的消耗情况。用户在选择...
除了将数据保存到RAM中并通过调试工具导出外,还可以考虑将重要数据保存到非易失性存储器中,确保数据的安全性和持久性。 ##### 5.1 内置EEPROM STM32部分型号内置了EEPROM(电可擦可编程只读存储器),可以用来...
这种数据保存和读取的技巧在各种需要显示和管理大量数据的应用中都十分常见,例如日志查看器、数据库浏览器、配置管理工具等。 总的来说,易语言超级列表框数据保存的核心在于理解和运用易语言提供的数据操作和文件...
- 对于大型项目,如何组织和管理数据块,以确保数据的一致性和项目的可维护性。 此外,根据所给内容中提到的网址,用户还可以访问西门子官方网站提供的相关资源,如FAQ文档、在线支持论坛、用户手册下载链接等。...
在通讯录管理系统中,主要涉及的两种抽象数据类型(ADT)是链表和数组: 1. **链表**:链表是一种非连续、非顺序的存储结构,通过指针链接数据元素来保持逻辑顺序。在这个通讯录系统中,链表可能被用来存储联系人...
【作品名称】:基于Unity GameFramework的独立的数据结点组件,将任意类型的数据以树状结构的形式进行保存,用于管理游戏运行时的各种数据 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为...
本文将详细介绍如何在MFC中实现从编辑框(即`EditBox`)读取数据,并将这些数据保存到TXT文本文件中的过程。 #### 创建MFC项目 1. **启动Visual Studio**:首先确保已经安装了支持MFC的Visual Studio版本。 2. **...
在本场景中,"TDMS数据保存"指的是利用LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)这一图形化编程环境,将多通道串口数据以TDMS格式进行存储。 LabVIEW是NI公司...
在VB6.0中,将数据保存为TXT文件是一项常见的任务,这主要涉及到文本文件的I/O操作。本文将深入探讨如何使用Visual Basic 6.0编写源代码来实现这一功能,以及涉及的相关知识点。 首先,我们需要理解VB6.0中的文件...
本文件包“TDMS保存数据_labview_”包含了使用LabVIEW操作TDMS文件的代码实例,即“TDMS保存数据.vi”。 TDMS文件格式是专门为测试和测量应用设计的,它允许用户以结构化的方式存储时间序列数据,包括数字、模拟...
在数据保存方面,LabVIEW提供了多种方法来存储和管理实验或工程过程中的数据,以便于后续分析、报告或者进一步处理。"20200223数据保存_labview数据保存_labview_数据存储_thoughthy7_"这个标题暗示了这是一个关于...
下面我们将深入探讨如何利用VB6.0和ADO来实现数据保存到Access数据库的操作: 1. **建立数据库连接**:首先,我们需要创建一个Connection对象实例,设置数据库的连接字符串。例如: ```vb Dim conn As New ADODB....
这个主题主要涉及如何在程序运行过程中将内存中的数据保存到磁盘上,以便后续可以再次加载和使用。这里我们将深入探讨“SP保存对象”这一标签所涵盖的知识点。 首先,基本数据类型是指编程语言中预定义的简单数据...