当前课程知识点:Android应用开发基础 >  第十章 数据存储 >  10.1 文件存储 >  10.1 文件存储

返回《Android应用开发基础》慕课在线视频课程列表

10.1 文件存储在线视频

下一节:10.1.1 实践案例-文件读写布局

返回《Android应用开发基础》慕课在线视频列表

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应用开发基础课程列表:

课程教案

-1 Android应用开发基础-课程标准

-2 Android应用开发基础-教案

第一章 Android概述

-讨论:Android应用开发基础资源下载地址

-讨论的问题:华为“鸿蒙系统”会取代安卓吗?

-Android Studio4.1.2安装常用问题汇总2021.3.15

-1.1 Android概述

--1.1 Android概述

--1.1 Android Studio安装与配置-实践案例

-1.1 Android概述--作业

-1.2 Android程序

--1.2 Android程序

--1.2 第一个Android应用程序-实践案例

-1.2 Android程序--作业

-1.3 Android程序调试

--1.3 Android程序调试

--1.3 Android程序调试-实践案例

-1.3 Android程序调试--作业

-讨论-完成第一个Android程序需要多长时间?

第二章 Android视图

-讨论-什么是Activity?

-2.1 Activity概述

--2.1 Activity概述

--2.1.1 实践案例-Activity生命周期

--2.1.2 实践案例-Activity跳转和数据传递

-2.1 Activity概述--作业

-2.2 Activity应用

--2.2 Activity应用

--2.2 实践案例-Activity四种启动模式

-第2章 Android视图--2.2 Activity应用

-讨论-怎么理解常用的四种启动模式?

第三章 Android组件

-讨论:Android在五个常用布局外还有哪几种布局方式?

-3.1 Activity布局

--3.1 Activity布局

--3.1 实践案例-Android布局

-3.1 Activity布局--作业

-3.2 Android基础组件

--3.2 Android基础组件

--3.2.1 实践案例-文本和按钮组件

--3.2.2 实践案例-编辑框和进度条组件

-3.2 Android基础组件--作业

-3.3 Android中级组件

--3.3 Android中级组件

--3.3.1 实践案例-复选框和开关组件

--3.3.2 实践案例-单选框和图像组件

-3.3 Android中级组件--作业

-3.4 Android适配器

--3.4.1 系统适配器

--3.4.2 自定义适配器

--3.4.1实践案例-系统适配器

--3.4.2 实践案例-自定义适配器

-3.4 Android适配器--作业

-讨论-如何解决Android的布局嵌套问题的?

第四章 Android Fragment

-讨论:Fragment的优点?

-4.1 Fragment碎片组件

--4.1.1 Fragment静态加载

--4.1.2 Fragment与Activity通讯

--4.1.3 Fragment动态加载

--4.1.1 实践案例-Fragment静态加载

--4.1.2 实践案例-Fragment的动态加载

-4.1 Fragment碎片组件--作业

-4.2 ViewPager翻页类组件

--4.2.1 ViewPager翻页类组件

--4.2.2 引导页和标题栏

--4.2 实践案例-引导页和选项卡

-4.2 ViewPager翻页类组件--作业

-讨论:fragment与activity的生命周期有哪些不同?

第五章 广播

-讨论:Android广播有什么作用?

-5.1 Android广播概述

--5.1 Android广播概述

--5.1.1 实践案例-手机电量显示

--5.1.2 实践案例-手机充电状态显示

-5.1 Android广播概述--作业

-5.2 Android广播工作原理

--5.2 Android广播工作原理

--5.2.1 实践案例-手机网络状态显示

--5.2.2 实践案例-短消息接收

-5.2 Android广播工作原理--作业

-5.3 自定义广播

--5.3 自定义广播

--5.3 实践案例-自定义广播与有序广播

-第5章 广播--5.3 自定义广播

-5.4 有序广播

--5.4有序广播

--5.4.2 实践案例-登录广播-记住密码

--5.4.2 实践案例-登录广播-强制退出

-第5章 广播--5.4 有序广播

-讨论:广播的动态注册和静态注册有什么区别?

第六章 Android服务

-讨论:Android的服务有什么作用?

-6.1 系统服务概述

--6.1 系统服务概述

-6.1 系统服务概述--作业

-6.2 访问系统服务

--6.2 访问系统服务

--6.2 实践案例-通知服务

-6.2 访问系统服务--作业

-6.3 自定义服务

--6.3 自定义服务

--6.3.1 实践案例-启动服务

--6.3.2 实践案例-绑定服务

--6.3.3 实践案例-后台服务

-第6章 Android服务--6.3 自定义服务

-6.4 多线程

--6.4 多线程

--6.4.2 实践案例-MyService下载

--6.4.3 实践案例-MyIntentService

--6.4.4 实践案例-AsyncTask实现对话框下载

--6.4.5 实践案例-下载精灵

-第6章 Android服务--6.4 多线程

-讨论:Android中怎么启动Service?

第七章 内容提供者ContentProvider

-讨论:ContentProvide的作用是什么?

-7.1 Android运行权限

--7.1 Android运行权限

--7.1 实践案例-拨打电话与发送短信

-7.1 Android运行权限--作业

-7.2 URL URI概述

--7.2 URL URI概述

-第7章 内容提供者ContentProvider--7.2 URL URI概述

-7.3 ContentProvider概述

--7.3 ContentProvider概述

--7.3 实践案例-读取联系人

-第7章 内容提供者ContentProvider--7.3 ContentProvider概述

-7.4 访问通讯录

--7.4 访问通讯录

--7.4.1 实践案例-读取通讯录

--7.4.2 实践案例-添加通讯录

--7.4.3 实践案例-删除更改通讯录

-第7章 内容提供者ContentProvider--7.4 访问通讯录

-7.5 课后作业案例

--7.5.1 实践案例-文件管理器-查看

--7.5.2 实践案例-文件管理器-播放

-讨论:ContentProvide如何使用?

第八章 多媒体

-讨论:Android多媒体主要应用于哪些场景?

-8.1 相机服务

--8.1 相机服务

--8.1.1实践案例-拍照服务

--8.1.2 实践案例-相册服务

-8.1 相机服务--作业

-8.2 音视频服务

--8.2 音视频服务

--8.2.1实践案例-音乐播放

--8.2.2 实践案例-视频播放

-8.2 音视频服务--作业

-讨论:Android视频组件的使用流程?

第九章 网络技术

-讨论:为什么使用Json作为网络的通讯格式?

-9.1 网络服务概述

--9.1 网络服务概述

--9.1 实践案例-WebView和Http服务

-9.1 网络服务概述--作业

-9.2 网络框架

--9.2 网络框架

--9.2 实践案例-okhttp框架

-9.2 网络框架--作业

-9.3 Json

--9.3 Json

--9.3 实践案例-json协议

-第9章 网络技术--9.3 Json

-9.4 Volley

--9.4 volley

--9.4 实践案例-volley框架

-第9章 网络技术--9.4 Volley

-讨论:OkHttp和Volley的有什么区别?

第十章 数据存储

-讨论:Android的存储方式有哪几种?

-10.1 文件存储

--10.1 文件存储

--10.1.1 实践案例-文件读写布局

--10.1.2 实践案例-文件读写

--10.1.3 实践案例-SharedPreference文件读写

-10.1 文件存储--作业

-10.2 数据库存储

--10.2 数据库存储

--10.2.1 实践案例-Sqlite数据库操作布局

--10.2.2 实践案例-Sqlite数据库操作

-10.2 数据库存储--作业

-讨论:SQLite的基础操作的流程是什么?

课程实训(不计入考核)

-第1章 实训简介以及开发环境配置

--实训项目简介PPT以及实训指导书

--1.1 实训项目简介

--1.2 项目开发环境配置

-第2章 在线音乐播放器整体设计以及服务端开发

--在线音乐播放器整体介绍PPT以及服务端开发实训指导书

--2.1 在线音乐播放器-整体设计

--2.2 在线音乐播放器-服务端开发

-第3章 在线音乐播放器-客户端开发

--3.1 客服端开发实训指导书以及PPT

--3.2 客户端开发-讲课视频

-第4章 在线音乐播放器-完整版

--4.1 实训指导书以及PPT

--4.2 在线音乐播放器-完整版授课视频

-第5章 QQ聊天项目

--5.1 实训指导书以及PPT

--5.2 QQ聊天项目授课视频

-第6章 在线点餐系统

--6.1 实训指导书以及PPT

--6.2 在线点餐系统授课视频

10.1 文件存储笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。