安卓基础学习笔记(十二)

/ 0评 / 0

文件存储
----------------------------------
文件存储是将数据存储为某种格式的文件,例如txt、jpg等等。
文件存储的方式是通过Java中的IO操作完成的。
文件存储区分为内部存储、外部存储、内部缓存存储、外部缓存存储。
【内部存储】
内部存储的文件将保存在 /data/data/项目包名/files/ 文件夹下。
实现内部存储的文件读写主要依赖于openFileInput()和openFileOutput()方法获取FileInputStream和FileOutputStream对象,在读写过程中,也可以对以上2种流进行再次包装。
内部存储可能使用到的方法:

FileInputStream openFileInput() -> 得到文件输入字节流
FileOutputStream openFileOutput() -> 得到文件输出字节流
File getFilesDir() -> 得到内部存储默认文件夹的File对象
File getDir(String name, int mode) -> 获取在内部存储中指令的文件夹的File对象,Ps:凡自行创建的文件夹,系统都会自动添加app_作为前缀,假设开发者指定的文件夹名为log,则创建出的文件夹叫作app_log,不过,在开发者进行开发过程中,无须考虑该前缀的问题
String[] fileList() -> 获取私有文件的列表
boolean deleteFile(String name) -> 删除指定的私有文件

注意:内部存储的文件也可以在“设置”中进行清除。
【外部存储】
外部存储即扩展存储,通过Enviroment类的静态方法可以获取外部存储的File对象,然后再结合IO即可实现文件的读写。
注意:在高版本的Android系统中,访问外部存储是需要权限的,且读写权限是各自独立的。

android.permission.MOUNT_UNMOUNT_FILESYSTEMS
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

注意:外部存储并不是始终可用的,使用之前应该检查状态。
【缓存存储】
缓存指的依然是本地存储,但是,存储的数据/文件应该是具有时效性,即过一段时间后,该数据就基本不需要使用了。
缓存区分为内部缓存和外部缓存。

File getCacheDir() -> 获取内部缓存的文件夹的File对象
File getExternalCacheDir() -> 获取外部缓存的文件夹的File对象

内部缓存是会被Android系统进行管理的,即Android系统会把内部缓存占用的空间控制在一个合理的范围之内,所以,不要在内部缓存中存储大量的数据。
外部缓存不会被Android系统进行管理,开发者应该制定一套逻辑把外部缓存的使用情况控制起来,例如每月清除一次??以前的数据,或每周清理一次数据保证外部缓存的占用空间不超过???,即使不制定自动清理的逻辑,也应该在软件中提供清理缓存的设置项。

SQLite:数据库
----------------------------------
【名词解释】
数据库(database):相当于excel文件,是若干个数据表的载体,内部可以存在若干数据表
数据表(table):相当于excel文件中的某个工作表,用于存储数据
列/字段(column):即一竖排
行(row):即一横排
【相关英文】

design:设计
unique:唯一的
execute:执行
insert:插入
into:到...里面
delete:删除
auto:自动
increment:增长/增加
primary:主要的
primary key:主键
version:版本

【SQL语句】
是一系列固定的语法,实现对数据库的所有内容进行管理。
【创建数据表】
语法:create table 表名 (字段设计列表)
字段设计列表语法:字段名 字段数据类型 字段约束
各字段之间使用英文的逗号进行分隔
示例:create table teachers (name varchar(8) not null unique, tel varchar(16), email varchar(50))
【增加数据】
语法:insert into 表名 (字段列表) values (值列表)
示例:

  insert into teachers (name, tel, email) values ('王海涛', '13800138001', 'wanght@duicode.com')
  insert into teachers (email, name, tel) values ('chengheng@duicode.com', '成恒', '138****8006')
  insert into teachers (name) values ('张广')

【删除数据】
语法:delete from 表名 [where子句]
where子句的语法:where 字段 条件运算符 值 [关系运算符 字段 条件运算符 值]
条件运算符:= <> >= <= 关系运算符:and or not 示例:

  delete from teachers // 删除teacher表中的所有数据
  delete from teachers where name='王海涛' // 删除name字段的值为'王海涛'的数据
  delete from teachers where tel='010-66******' // 删除tel字段的值为'010-66******'的数据
  delete from teacher where name='成恒' and tel='10086' // 删除name字符的值为'成恒',并且tel字段的值为'10086'的数据,以上2个条件必须同时满足
  delete from teachers where name='成恒' or tel='138****8007' // 删除name字符的值为'成恒',或者tel字段的值为'138****8007'的数据,以上2个条件满足其中任何1条均可

【修改数据】
语法:update 表名 set 字段赋值列表 [where子句]
字段赋值列表:字段名=字段值
示例:

  update teachers set tel='010-66******' // 设置每一条数据的tel字段的值为'010-66******'
  update teachers set email='zhangguang@duicode.com' where name='张广' // 设置name字段的值为'张广'的数据的email字段值为'zhangguang@duicode.com'

评论已关闭。