您的位置:首页 > 移动开发 > Android开发

android内存外存

2016-03-22 14:43 603 查看
Android中的数据持久化存储
-------------------------------------
1. SharedPreferences
2. 本地文件存储
3. SQLite数据库
4. 网络存储

本地文件存储
-------------------------------------
本地文件存储是使用IO(Input/Output)读写文件。
流的分类:
1. 输入流、输出流
2. 字节流、字符流
流的表现:
输入字节流:InputStream
输出字节流:OutputStream
输入字符流:Reader
输出字符流:Writer
流的读写:
只要是输入流,都有read()方法,只要是输出流,都有write()方法
字节流和字符流的选择:
字节流不可以用于输出显示字符
字符流不可以用于处理非文本类的数据
常用的流:
InputStream / OutputStream
Reader / Writer
FileInputStream / FileOutputStream
FileReader / FileWriter
BufferedInputStream / BufferedOutputStream
BufferedReader / BufferedWriter
InputStreamReader / OutputStreamWriter
带有特殊方法的流:
BufferedReader -> String readLine();
PrintWriter -> void println(String)

Android的文件存储
-------------------------------------
1. 内部存储
存储在私有目录(/data/data/项目包名/files)下,使用内部存储时,需要通过openFileInput()、openFileOutput()获取FileInputStream、FileOutputStream对象,然后使用普通的读写方式即可实现读写。
常用其它方法:
File getFilesDir() -> 获取files文件夹的File对象
File getDir(String name, int mode) -> 获取指定的文件夹的File对象,该文件夹位于项目文件夹(/data/data/项目包名),使用该方法获取的文件夹将自动添加app_作为前缀
String[] fileList() -> 获取文件列表
boolean deleteFile(String name) -> 删除指定的文件

2. 外部存储
存储在公有目录下,表现为sdcard目录。
需要注意:sdcard不是任何时候都可用的,在高版本的Android系统中读、写都需要声明权限。
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
关于外部存储的文件夹相关访问可以通过Enviroment类实现。

3. 内部缓存存储
缓存用于存储具有时效性的文件。
内部缓存的文件将存储在/data/data/项目包名/cache文件夹之下。
通过getCacheDir()方法可以获取缓存文件夹的File对象。
内部缓存可以由Android系统进行维护。

4. 外部缓存存储
外部缓存是存在于外部公有目录下的缓存文件夹中的文件。
通过getExternalCacheDir()可以获取到外部缓存的文件夹对象。
外部缓存也是外部存储的一部分,所以,也可能不是始终可用的。
外部缓存并不由系统进行维护,则开发者使用外部缓存的同时,应该定制一套管理外部缓存的机制。

SQLite数据库
-------------------------------------
【创建数据库】
调用openOrCreateDatabase(String, int, CursorFactory)即可
【创建数据表】
创建数据表的语法:
create table 表名 (字段设计列表)
字段设计列表的语法:
字段名 字段类型 字段约束
多个字段之间使用逗号进行分隔
示例:
crate table gsd1601 (id interger primary key autoincrement, name varchar(16) not null unique, class varchar(16) not null, age integer)
【增加数据】
语法:
insert into 表名 (字段列表) values (值列表)
字段列表和值列表中,各字段或值之间使用逗号分隔
示例:
insert into gsd1601 (name, class, age) values (''老苏', 'gsd1601', 18)
insert into gsd1601 (age, name, class) values (17, '老赵', 'gsd1511')
【删除数据】
语法:
delete from 表名 [where子句]
where子句语法:
where 字段 关系 值
示例:
delete from gsd1601 // 慎用!!!
delete from gsd1601 where id=3
delete from gsd1601 where class='gsd1601'
delete from gsd1601 where id=3 and class='gsd1601'
【修改数据】
语法:
update 表名 set 字段赋值列表 [where子句]
字段赋值列表:
字段名=值
多个字段赋值语法之间使用逗号分隔
示例:
update gsd1601 set class='gsd1602' // 慎用
update gsd1601 set class='gsd1602', age=16 where id=3

SQLite数据库相关英语
-------------------------------------
database -> 数据库,类似于xls文件,用于存放若干数据表
table -> 数据表,数据的载体
column -> 列(竖排),用于约定该列应该存储什么类型的数据、数据的类型
row -> 行(横排),表示某一条数据
unique -> 唯一的
primary -> 主要的
key -> 键
auto -> 自动的
increment -> 递增
insert -> 插入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: