前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记44 | 数据存储之File存储最简单地实现

笔记44 | 数据存储之File存储最简单地实现

作者头像
项勇
发布2018-06-19 15:58:05
4320
发布2018-06-19 15:58:05
举报
文章被收录于专栏:项勇项勇项勇

地址

CSDN:http://blog.csdn.net/xiangyong_1521/article/details/78665993 简书:http://www.jianshu.com/p/736dd7b63ece


目录

  • 概念
  • 存储
  • 读取

概念

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。它比较适合用于存储一些简单的文本数据或二进制数据。


存储

Context 类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。

这个方法接收两个参数,第一个参数是文件创建时使用的名称,注意这里指定的文件名不可以包含路径,因为所有文件都是默认储存到 /data/data/<包名>/files/ 目录下的。

第二个参数是文件的操作模式,主要有两种模式可选:

MODE_PRIVATE(覆盖原文) MODE_APPEND(追加内容) 。

openFileOutput() 方法返回的是一个 FileOutputStream 对象,得到这个对象之后就可以使用 Java 流的方式将数据写入到文件中了。

int i = 0;    String md = " data";    FileOutputStream fileOutputStream;    BufferedWriter bufferedWriter;    private void inSave() {        try {            String out = md + (i++);            //设置文件名称,以及存储方式            fileOutputStream = openFileOutput("md.txt",Context.MODE_APPEND);            //创建一个OutputStreamWriter对象,传入BufferedWriter的构造器中            bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));            //向文件中写入数据            bufferedWriter.write(out);        } catch (IOException e) {            e.printStackTrace();        } finally{            try {                bufferedWriter.close();            } catch (Exception e2) {            }        }    }

读取

类似于将数据存储到文件中,Context 类中还提供了一个 openFileInput() 方法,用于从文件中读取数据。

openFileInput() 方法只接收一个参数,即要读取的文件名,然后系统会自动到 /data/data/<包名>/files/ 目录下去加载这个文件,并返回一个 FileInputStream 对象。

BufferedReader bufferedReader;    FileInputStream fileInputStream;    StringBuilder builder;    private void inRead() {        try {            //设置将要打开的存储文件名称            fileInputStream = openFileInput("md.txt");            //FileInputStream -> InputStreamReader ->BufferedReader            bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));            //读取每一行数据,并追加到StringBuilder对象中,直到结束            builder = new StringBuilder();            String line = new String();            //读取每一行数据,并追加到StringBuilder对象中,直到结束            while ((line = bufferedReader.readLine()) != null) {                builder.append(line);                textView.setText(""+builder);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (bufferedReader != null) {                try {                    bufferedReader.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }

其他

如果不能判定一部手机是否存在sdcard,如果没有,则需要提供其他解决方法,比如 保存到手机存储; 提示不存在sdcard; 可以使用:

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){      //执行存储sdcard方法  }  else{      //存储到手机中,或提示   Toast.makeText(this, "读取失败,SD卡不存在!", Toast.LENGTH_LONG).show();}


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 项勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 地址
  • 目录
  • 概念
  • 存储
  • 读取
  • 其他
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档