当前课程知识点:Android应用开发基础 > 第十章 数据存储 > 10.1 文件存储 > 10.1 文件存储
本节我们介绍文件存储
如果app内有些数据
是需要使用到上次该app关闭时的数据
比如下次启动app没有网络时
要求显示之前的省市信息
那么本地储存非常有必要
本地存储就是将
内存瞬时数据保存到存储设备
变为持久化的数据
Android数据存储主要有四种方式
1 文件存储
数据通过I/O存储为文件
用于存储大数量的文本或者二进制数据
2 SharedPreference存储
数据通过XML文件存储
用于存储简单的参数设置
3 数据库存储
数据通过轻量级的SqLite文件存储
用于存储复杂而关键数据
4 Content Provider存储
应用程序数据数据共享存储
用于存储音视频和通讯录等系统数据
文件存储是Android中
最基本的一种数据存储方式
它不对存储的内容进行任何的格式化处理
所有数据都是原封不动的保存到文件当中
它比较适合用于存储一些简单的文本数据
或二进制数据
如果你想使用文件存储方式
来保存一些较为复杂的文本数据
就需要定义一套自己的格式规范
方便之后将文件重新解析出来
Java提供I/O流存储方式
FileOutputStream提供
openFileOutPut方法将数据写入文件
FileInputStream
提供openFileInPut方法读取文件
Android提供Enviroment类
对Android设备的SD卡进行文件数据的读写
Enviroment类的方法如下表
1 getRootDirectory
获取系统根目录路径
2 getDataDirectory
获取系统数据目录路径
3 getDownload CacheDirectory
获取下载缓存目录路径
4 getExternalStorageDirectory
获取外部存储(SD卡)目录路径
5 getExternalStorageState
获取外部存储(SD卡)的状态
6 getStorageState
获取指定目录的状态
下面是一个文件存储读取用户
注册信息的一个实例
文件存储应用中
输入学生的姓名 学号 班级和爱好后
点击保存文本到SD卡
显示用户文件的保存路径
文件读取应用中
下载所有的txt文本列表显示
选择一个学生文件后
显示用户的学生的姓名 学号 班级
和爱好信息
下面我们看一下
文件存储读取功能的实验过程
Android7.0后
申请访问SD外部存储权限的流程如下
1 首先检查应用是否有读取SD卡权限
如果没有
需要向用户申请权限
2 权限申请的处理
如图所示
Activity中
重写onRequestPermissionsResult() 方法
处理权限结果回调
当用户处理完授权操作时
系统会自动回调该方法
该方法有三个参数
(1) int requestCode
在调用requestPermissions()时的第一个参数
(2) String[] permissions
权限数组
在调用requestPermissions()时的第二个参数
(3) int[] grantResults
授权结果数组
下面介绍文件的保存和读取功能的流程
1 文件保存的代码如图所示
1.1 使用路径参数新建文件输出流
1.2 将文本通过输出流保存到文件
1.3 关闭输出流
2 文件读取的代码如图所示
2.1 新建文件输出流
2.2 新建字节数组
2.3 将文件内容通过输入流
拷贝到字节数组
2.4 将字节数组内容转换为字符串
2.5 关闭输入流
数据保存到文件的流程如图
1 获取系统时间的代码如图所示
1.1 新建时间格式化对象
1.2 使用时间格式化对象格式化当前时间
2 保存数据到文件的代码如图所示
2.1 首先判断SD卡是否可以读取
2.2 如图可以读取
初始化文件路径
2.3 将数据保存到文件
2.4 在视图组件中显示文件信息
从文件中读取数据的流程如下
1 获取文件夹的所有的
指定后缀名的文件的代码如图
1.1 新建文件列表对象
1.2 新建文件对象数组
1.3 新建文件路径对象
1.4 新建文件过滤器对象
1.5 文件夹中过滤后 缀名后
存入文件对象数组
1.6 将文件对象数组中的文件
存储到文件列表对象
2 指定文件夹的所有txt文档
显示到Spinner控件的代码如图所示
2.1 获取所有文件列表
2.2 文件名数组分配内存
2.3 给文件名数组赋值
2.4 新建适配器
2.5 Spinner控件设置适配器
3 Spinner控件事件处理的代码如图所示
3.1 获取文件路径
3.2 读取文件内容到字符串
3.3 组件中显示字符串内容
下面进行权限设置
1 在配置信息文件中
增加读写SD卡权限代码如图所示
SD卡的写权限为WRITE_EXTERNAL_STORAGE
SD卡的读权限为WRITE_EXTERNAL_STORAGE
2 使用文件管理器查看保存文件地址
如图所示
进入SD卡目录
可以看到已保存信息的文件
可以下载查看文件的内容
下面我们介绍SharePreferences存储
SharePreferences类是一个轻量级的存储类
特别适合用于保存软件配置参数
使用SharedPreferences保存数据
其背后是用xml文件存放数据
这种方式存储结构为Key-Value的键值对
主要用来存储比较简单的一些数据
而且是标准的Boolean
Int Float Long String等类型
SharedPreferences类存储文件的名字后
无需考虑存储文件的后缀问题
因为Android系统会自动将
你命名的文件后面加上.xml
在Android系统中
SharedPreferences中的信息
以及XML文件的形式
存储在
/data/data/PACKAGE_NAME/shared_prefs目录下
SharedPreference文件有四种操作模式
1 Context.MODE_PRIVATE
默认操作模式
代表该文件是私有数据
只能被应用本身访问
2 Context.MODE_APPEND
模式会检查文件是否存在
存在就往文件追加内容
否则就创建新文件
3 Context.MODE_WORLD_READABLE
表示当前文件可以被其他应用读取
4 Context.MODE_WORLD_WRITEABLE
表示当前文件可以被其他应用写入
获取SharedPreference数据的两种方式如下
1 this.getPreferences (int mode)
调用Activity对象的getPreferences()方法
通过Activity对象获取
获取的是本Activity私有的Preference
保存在系统中的xml形式的文件的名称
为这个Activity的名字
因此
一个Activity只能有一个
属于这个Activity
2 this.getSharedPreferences (String name,int mode)
调用Context对象的getPreferences()方法
调用Context对象的
getSharedPreferences()方法
以第一个参数的name为文件名
保存在系统中
下面我们看一个通过SharedPreference
实现用户名和密码存储的实例
用户输入用户名和密码后
选择保存密码
点击登录后
用户名和密码存储到SharedPreference文件中
下面我们看一下
SharedPreference文件读取的实现过程
1 SharedPreference文件的初始化
getSharedPreferences(login
Context.MODE_PRIVATE)的方式读取文件
将内容存储到login.xml中
文件只能被应用本身访问
2 键值对数据写入
2.1 mSharedPreferences.edit()
获取文件的编辑权限
2.2 写入键值User和Password
2.3 将键值对写入文件
3 读取键值对数据
读取键值User和Password数据
这就是SharedPreferences文件的
读取和存储过程
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统