android 将对象存储于本地(内存)

不懂的地方就要花力气搞懂,自己以前没太认真,所以吃了很多亏啊。切入今天的主题。

我们的项目中为了实现某些二次编辑的效果,就必须对一些数据进行存储,而能够将对象存储起来,对于我们的开发有时会显得十分的方便,这篇文章主要介绍如何将对象存储于本地,在下一篇文章中我们接着讨论如何将对象存储于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("读取对象失败");}

不敢面对自己的不完美,总是担心自己的失败,

android 将对象存储于本地(内存)

相关文章:

你感兴趣的文章:

标签云: