android 将对象存储于本地(内存)
来源:互联网 发布:ubuntu怎么新建文件夹 编辑:程序博客网 时间:2024/06/07 01:31
不懂的地方就要花力气搞懂,自己以前没太认真,所以吃了很多亏啊。切入今天的主题。
我们的项目中为了实现某些二次编辑的效果,就必须对一些数据进行存储,而能够将对象存储起来,对于我们的开发有时会显得十分的方便,这篇文章主要介绍如何将对象存储于本地,在下一篇文章中我们接着讨论如何将对象存储于SD卡中。
android中能够被保存的对象都是被序列化过的对象。如何让类实现序列化呢?其实就是让我们的类实现Serializable接口。
打开Serializable的源代码,我们会发现:
public interface Serializable {}对,没错,Serializable是个空接口,其实这里我们也可以看出,Serializable的作用就是一个标识作用。
我这里写了一个非常简单的类,如下:
public class SaveObjectDemo implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
然后在主Activity中实现了保存对象和取的对象的方法:
1. 保存对象
<span style="white-space:pre"></span>/** * @function 将一个对象保存到本地 * @author D-light * @time 2014-07-23 * @param String name * @return void */private void saveObject(String name){FileOutputStream fos = null;ObjectOutputStream oos = null;try {fos = this.openFileOutput(name, MODE_PRIVATE);oos = new ObjectOutputStream(fos);oos.writeObject(sod);} 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();}}}}
2. 取得对象
<span style="white-space:pre"></span>/** * @function 从本地读取保存的对象 * @author D-light * @time 2014-07-23 * @param String name * @return Object */private Object getObject(String name){FileInputStream fis = null;ObjectInputStream ois = null;try {fis = this.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();}}}//读取产生异常,返回nullreturn null;}有了这两个方法后,我们就进行调用:
sod = new SaveObjectDemo();sod.setName("zhoujielun");sod.setAge(20);//保存对象到本地saveObject("object.dat");//得到保存于本地路径的对象SaveObjectDemo s = (SaveObjectDemo) getObject("object.dat");System.out.println("姓名:" + s.getName() + ", 年龄:" + s.getAge());
最后可以得到如下的结果:
PS: 有段代码写的不够严谨,如下:
if (null != s) {System.out.println("姓名:" + s.getName() + ", 年龄:" + s.getAge());} else {System.out.println("读取对象失败");}
3 2
- android 将对象存储于本地(内存)
- android 将对象存储于本地(内存)
- android 将对象存储于本地(内存)
- 关于:android 将对象存储于本地(内存)
- android 将对象存储于本地
- android 将对象序列化存储到本地
- android 关于Bitmap对象于内存管理
- Android 关于Bitmap对象于内存管理
- android 关于Bitmap对象于内存管理
- Android将对象存储到SharedPreferences中
- Android将对象存储到SharedPreferences中
- android 将简单的数据存储到本地-SharedPreferences
- html5本地存储对象
- libjpeg:将Yuv420P图像数据转为jpeg并存储于内存中
- js 本地存储 对象存储
- Android存储对象到本地(SharedPreferences方式和file方式)
- Android存储对象到本地(SharedPreferences方式和file方式)
- android之对象存储在本地或者sdcard
- JSP中JSTL核心标签库的<c:choose>标签
- SQL--contains用法 (转)
- boost ssl
- Android从无知到有知——NO.6
- gdb调试工具命令笔记
- android 将对象存储于本地(内存)
- eclipse在已创建好的目录下创建新项目
- [LeetCode] Reverse Integer
- 唯一的游戏世界
- google protocl buffer 序列化和反序列化的一个例子
- Codeforces Round #216 (Div. 2) E. Valera and Queries (BIT)
- 经纬财富:德兴白银午后操作建议
- ios7,使用boundingRectWithSize方法计算文本正确的size
- 导航栈逻辑上的错误与单例方法