在我们写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是对象流,同时也是处理流,处理流是不能直接指向到最络要输入输出的文件的,它们只能指向到结点流,所以我们要先创建好结点流,然后将对象流指向到这些结点流上,就可能通过处理流去处理对象的输入与输出了。

android 对象输出到文件相关推荐

  1. Android捕捉崩溃日志并输出日志文件

    Android捕捉崩溃日志并输出日志文件 当程序与运行时发生崩溃,可以捕捉到当前崩溃的日志信息并写入文件保存到指定的目录下.这里还做了最大文件数量限制,超过数量即删除旧日志文件. import jav ...

  2. Android日志输出到控制台、文件(XLog开源日志工具)

    Android日志输出到控制台.文件(XLog开源日志工具) Android项目开发中,需要将Log同时输出到控制台 与 文件,并要求将日志文件压缩并上传到远程服务端(便于分析App使用过程中用户反馈 ...

  3. 将json对象输出为xml文件

    一.pom中引入jdom依赖 <dependency><groupId>org.jdom</groupId><artifactId>jdom</a ...

  4. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  5. android文件存储数组,Android面试简录——文件存储

    * SharedPreferences 请描述Android SDK支持哪些文件存储技术? 1.SharedPreferences保存key-value类型的数据 2.流文件存储(openFileOu ...

  6. android对象序列化,Android序列化总结

    前言 公园里,一位仙风鹤骨的老者在打太极,一招一式都仙气十足,一个年轻人走过去:"大爷,太极这玩意儿花拳绣腿,你练它干啥?"老者淡淡一笑:"年轻人,你还没有领悟到太极的真 ...

  7. python输出json到文件_Python:JSon输出到文件(Python : JSon Output to a file)

    Python:JSon输出到文件(Python : JSon Output to a file) 我从我的Python脚本输出一个JSon格式,我想把JSon写入一个文件. 我用 df_json.to ...

  8. C++随时输出到文件-outfile

    这里主要是讨论fstream的内容: #include <fstream> ofstream         //文件写操作 内存写入存储设备  ifstream         //文件 ...

  9. python文件输出-Python 文件和输入输出小结

    1.打开和关闭文件(open(),file(),close()) 有两种内建函数可以获取文件对象:open和file.他们的用法完全一样.下面只以open()为例子讲解.获取一个文件对象(打开文件)的 ...

  10. android studio .so混淆配置,Android Studio 下混淆 文件配置 有关问题 初探(一)

    Android Studio 下混淆 文件配置 问题 初探(一) 1.参考资料 https://stuff.mit.edu/afs/sipb/project/android/sdk/android-s ...

最新文章

  1. python国防_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...
  2. 2020年美团春招 技术综合试卷第一题
  3. java语言基础与go语言基础,数据类型区别
  4. Ubuntu 搭建 GitLab 笔记 ***
  5. Linux下查看物理CPU、逻辑CPU和CPU核数
  6. SpringBoot整合(Elasticserch)
  7. 置顶,博客中所有源码 github
  8. tsql_TSQL的历史
  9. 今天心情不太开心?有点心烦
  10. Spring Boot 项目打成 .exe 程序,实战来了!
  11. 2019年PAT甲级冬季考试真题及参考答案
  12. 三维空间点到线段的距离
  13. 计算机上网络怎么连接,手机怎么连接电脑上网
  14. 长沙银行“三重奏”:“生态银行”的新玩法
  15. 给基于HEXO的博客添加gitter在线交流
  16. 云手机虚拟机服务器配置,云手机虚拟机服务器
  17. 【Vue】高级系列(五)Vue模块化实战-demo2-任务清单todoList
  18. 小麦苗博客用到的图片
  19. (电赛电源方向)怎么样从零开始准备全国大学生电子设计竞赛
  20. 在腾讯做了4年软件测试,来面试要求35k,让我见识到了真正的软件测试天花板...

热门文章

  1. Javascript特效:简单日历
  2. 论文笔记_S2D.39_2015-ICCV-条件随机场作为递归神经网络(CRF-RNN)
  3. 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
  4. leetcode之回文链表
  5. PCL点云参数估计算法之RANSAC和LMEDS
  6. 04.如何升级扩展以支持Visual Studio 2019
  7. wso2 ei 6.4.0安装笔记
  8. 软件工程-东北师大站-第六次作业PSP
  9. Linux之系统信息操作20170330
  10. Junit学习笔记(二): 源码分析(2)-命令和组合模式