1.数据持久化:将在内存中的瞬时数据保存在存储设备中。瞬时数据:设备关机数据丢失。持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间转换。

  2.Android中简单的三种存储方式:文件存储、SharedPreference 存储以及数据库存储。

    1.文件存储 :不对数据作任何处理,将数据原封不动地存储到文件中,适合存储一些简单的文本数据和二进制数据。  

      a.将数据存储到文件中

         Context类提供了一个openFileOutput()方法,可以用于将数据存储到文件中。这个方法接收两个参数,第一个参数是文件名(文件名不能包含路径,默认路径为/data/data/<packagename>/files/),第二个参数是文件的操作模式,主要有MODE_PRIVATE 和 MODE_APPEND两种模式,前者是默认模式,当指定同样文件名时,所写入内容会覆盖掉原文件的内容,后者表示文件名相同时将内容追加到原文件内容后,不存在该文件则创建新文件。openFileOutput 方法返回一个FileOutputStream对象。

public void save() {
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*
*步骤:
*1.通过openFileOutput()方法的到一个FIleOutputStream对象
*2.通过FileOutputStream对象构造出一个OutputStreamWriter对象
*3.通过OutputStreamWriter对象构造出BufferedWriter对象
*4.通过BufferedWriter将文本内容写入文件
*/

      b.从文件中读取数据

        类似于将数据存储到文本中,Context类中提供了一个openFIleInput()方法,用于从文本中读取数据。这个方法只接收一个参数即要读取文件的文件名,系统在默认目录中找到这个文件后返回一个FilleInputStream对象,得到这个对象后通过java IO流就可以将数据读取出来了。

public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
} /*
*1.先通过openFileInput获取到FileInputStream对象
*2.通过FileInputStream获取到InputStreamReader对象
*3.通过InputSTreamReader获得BufferedReader对象
*4.通过BufferedReader进行一行行读取,把文件中所有的文本内容全部读取出来并存在StringBuilder中
*5.将读取到的内容返回
*/

   

【Android】数据存储-java IO流文件存储的更多相关文章

  1. java IO流文件的读写具体实例(转载)

    引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能 ...

  2. Java IO 流-- 文件拷贝

    IO流操作套路: 1.创建源: 2.选择流: 3.操作: 4.释放资源 上代码: package com.xzlf.io; import java.io.File; import java.io.Fi ...

  3. java IO流文件的读写具体实例

    IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...

  4. Java—IO流 文件的编码

    文件的编码 package cn.test; import java.io.UnsupportedEncodingException; public class Demo15 { public sta ...

  5. Java IO流文件复制/解压的几种方法总结

    引言 在JavaWeb项目开发过程,涉及到IO文件的读写操作以及文件的复制copy操作是作为一个程序员不可获取的知识,那接下来就总结一些copy文件的一些方法,与大家通过学习,如果还有其他更好的方法, ...

  6. java IO流文件拷贝文件(字符流标准写法)

    public static void copyFile2(String path1, String path2) { Reader reader = null; Writer writer = nul ...

  7. java IO流文件拷贝文件(字节流标准写法)

    public static void copyFile(String srcPath, String destPath) { FileInputStream fis = null; FileOutpu ...

  8. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  9. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

随机推荐

  1. ubuntu 10.04 安装qt 5.0.2

    转自ubuntu 10.04 安装qt 5.0.2 从qt project网站下载下来最新的qt5.0.2套件,发现是个.run文件,添加x属性,然后直接sudo ./****.run, 提示  /l ...

  2. 值得推荐的C/C++框架和库 very good

    [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看看现有的轮子吧 值得学习的C语 ...

  3. Activity的启动过程

    详见: http://www.cloudchou.com/android/post-805.html

  4. CSS六大选择器(注释css表里不能加注释!!)

    @charset "utf-8"; /* CSS Document */ <!--标签控制器--> body{ background-color:#F00} <! ...

  5. java基于xml配置的通用excel单表数据导入组件(五、Action处理类)

    package xxxxxx.manage.importexcel; import java.io.File; import java.util.HashMap; import java.util.M ...

  6. MVC Model Binder 规则

    http://www.cnblogs.com/mszhangxuefei/archive/2012/05/15/mvcnotes_30.html 使用默认的Model Binder(Using the ...

  7. Java项目中基于Hibernate分页总结

    1,First of all,  we should have a wrapper class for page,this class can calculate the startRow by th ...

  8. 如何设置textarea光标默认为第一行第一个字符

    判断文本区是否有内容,如果没有那么光标肯定是在第一行第一个为止的,记住,空格回车也算是有内容在的,也会影响光标的位置

  9. hdoj 1827 Summer Holiday【强连通分量&&缩点】

    Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  10. 【bzoj3172】 [Tjoi2013]单词

    题目描述 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. 输入 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个 ...