Android中把bean类集合储存到本地文件中的工具类
来源:互联网 发布:征服者更新用什么网络 编辑:程序博客网 时间:2024/06/07 21:18
一、在开发中经常会遇到直接储存bean类集合的需求,如把一个List<Bean>、Set<Bean>、Map<Interger,Bean>等等内存存储的集合,永久化的存储到本地文件中。
文件化储存中Bean类要进行序列化,继承Serializable或Parceable接口。
在这序列化的过程中,我个人遇到一些问题:
报错的错误,原因是:
因为在我序列化的bean类中有过处理Piant的操作,这样就会出现这报错。
二、具体实现:
DataCacheUtils工具类:
package com.qbs.listvideodemo.activity;import android.content.Context;import android.util.Log;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;/** * @author wangyao * @package com.qbs.listvideodemo.activity * 本类 采用泛型 广泛接受 ArrayList 直接做缓存,即是开发中经常用到的 bean; * 使用注意: 传进来的 ArrayList 所绑定的 bean,一定要是 已经继承 Serializable 或者Parcelable接口的; * 使用文本流做缓存。 * @date 2017/7/29 13:51 * @describe TODO * @project */public class DataCacheUtils { /** * 定义一些你项目里面的 缓存文件名字 ,自定义,不要也没关系,调用函数再传入也行 */ private static String DataCache = "Data_Cache_File"; /** * 保存 一组 数据 * * @param ctx 上下文 * @param data 种子 * @param cacheName 缓存文件名 */ public static <T> void saveListCache(Context ctx, ArrayList<T> data, String cacheName) { new DataCache<T>().saveGlobal(ctx, data, cacheName); } /** * 直接根据 缓存文件名获取 */ public static <T> ArrayList<T> loadListCache(Context ctx, String cacheName) { return new DataCache<T>().loadGlobal(ctx, cacheName); } /** * * @param <T> 数据缓存 save or load */ static class DataCache<T> { public void save(Context ctx, ArrayList<T> data, String name) { save(ctx, data, name, ""); } public void saveGlobal(Context ctx, ArrayList<T> data, String name) { save(ctx, data, name, DataCache); } private void save(Context ctx, ArrayList<T> data, String name, String folder) { if (ctx == null) { return; } File file; if (!folder.isEmpty()) { File fileDir = new File(ctx.getFilesDir(), folder); if (!fileDir.exists() || !fileDir.isDirectory()) { fileDir.mkdir(); } file = new File(fileDir, name); } else { file = new File(ctx.getFilesDir(), name); } if (file.exists()) { file.delete(); } Log.d("everb", file.getAbsolutePath()); try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file)); oos.writeObject(data); oos.close(); } catch (Exception e) { e.printStackTrace(); } } public ArrayList<T> load(Context ctx, String name) { return load(ctx, name, ""); } public ArrayList<T> loadGlobal(Context ctx, String name) { return load(ctx, name, DataCache); } private ArrayList<T> load(Context ctx, String name, String folder) { ArrayList<T> data = null; File file; if (!folder.isEmpty()) { File fileDir = new File(ctx.getFilesDir(), folder); if (!fileDir.exists() || !fileDir.isDirectory()) { fileDir.mkdir(); } file = new File(fileDir, name); } else { file = new File(ctx.getFilesDir(), name); } Log.d("everb", "file " + file.getAbsolutePath()); if (file.exists()) { try { Log.d("everb", "write object"); ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file)); data = (ArrayList<T>) ois.readObject(); ois.close(); } catch (Exception e) { Log.d("everb", e.toString()); } } if (data == null) { /** 如果没有 */ Log.d("everb", "data == null"); data = new ArrayList<T>(); } return data; } }}
阅读全文
0 0
- Android中把bean类集合储存到本地文件中的工具类
- 把request对象中的请求参数封装到bean中的工具类
- Android中数据储存方式的几种工具类
- Android工具类--SharedPreferences储存类
- 把ArrayList集合中的字符串内容写到文本文件中
- android log 的工具类 ,把日志保存到本地
- java通过一个url读取网站的源代码 储存到本地文件中
- java通过一个url读取网站的源代码 储存到本地文件中
- android 保存logcat信息到本地文件中
- android 工具类 集合
- 对Bean进行操作以用于把入参对象解析成Map参数传递到Mybatis的工具类
- 工具类:HttpURLConnHelper(实现网络访问文件,将获取到数据储存在文件流中)
- 把本地文件上传到github
- 属性储存工具类SpUtils
- 把request对象中的请求参数封装到bean中/生成UUID
- Android 如何把民间的控件工具集合:android-misc-widgets 下载到本地 并运行
- 自定义Exception类,将异常输出到本地文件中
- 集合框架中的工具类
- 游戏行业的技术化和互动化发展是一大趋势
- matlab的两个复数数组的点乘
- 最少拦截系统
- 关于AR VR应用层开发的学习路径
- XZ_iOS之Runtime使用运行时交换方法
- Android中把bean类集合储存到本地文件中的工具类
- mysql数据库替换表字段包含的某内容
- ActiveMQ集群的安装配置
- iOS MPMoviePlayerController 简介
- uva-10498-线性规划
- ElasticSearch优化的一些方法 些方法
- 各种数据类型的取值范围
- Android 背景图片重复平铺 Background repeat
- 深度拷贝、浅度拷贝、数组的拷贝