android 对象输出到文件

来源:互联网 发布:ipad淘宝hd不能横屏 编辑:程序博客网 时间:2024/06/16 01:10

  在我们写app时,经常要访问服务器去拉取服务器的数据,然后做本地缓存,这样只要服务器端的数据没有更新,我们的APP就没有必要去每次都发送请求,只要从缓存的本地文件中读取出来,正确的做解析即可。

  在公司最近的项目中,主要是要缓存一些目录数据,因为这些数据是不怎么变化的,不必每次都去发请求,有了这个需求后,我就开始准备缓存服务器返回来的Json数据,可后来注意到程序中接收到服务器的响应后已经将Json解析为了对象,这种情况下我就不可以将Json存到文件中去了,只能是将对象存到文件中去,于是就研究了一下Java如何将对象写入到文件中去,发现写对象到文件中与写字符串到文件基本上是一样的。

  下面是我写的一个存储对象和读取对象的demo:

 

package com.example.objectwriterdemo;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.util.Log;public class MainActivity extends Activity{private Student student;private Student stu1;private File sdCardDir;private File sdFile;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();readyToWriter();readyToReader();}private void initData(){student = new Student();student.name = "rzq";student.sex = "male";}private void readyToWriter(){if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){sdCardDir = Environment.getExternalStorageDirectory();sdFile = new File(sdCardDir, "student.out");try{FileOutputStream fos = new FileOutputStream(sdFile);ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(student);fos.close();}catch (Exception e){e.printStackTrace();}}}private void readyToReader(){if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){try{FileInputStream fis = new FileInputStream(sdFile);ObjectInputStream ois = new ObjectInputStream(fis);stu1 = (Student) ois.readObject();fis.close();}catch (Exception e){e.printStackTrace();}}Log.e("=========", stu1.name);}}

  解释一下:  FileInputStream,FileOutputStream是文件输入,输出流,是字节流,同时也是结点流,只有结点流是可以直接指向到具体的文件的,而ObjectInputStream,ObjectOutputStream是对象流,同时也是处理流,处理流是不能直接指向到最络要输入输出的文件的,它们只能指向到结点流,所以我们要先创建好结点流,然后将对象流指向到这些结点流上,就可能通过处理流去处理对象的输入与输出了。

0 0