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 -> 插入
相关文章推荐
- android L和android M的区别
- Android Out of memory on a 5200288-byte allocation.解决方法
- Android线程销毁
- android中的color使用总结
- Android应用中ListView利用OnScrollListener分页加载数据
- android:inputType常用取值
- 使用优化的数据容器——sparsearray
- Android RecyclerView 使用完全解析
- Android手机在开发调试时logcat不显示输出信息
- Android Studio开发入门-引用jar及so文件
- Android 中的URLEncoder和URLDecoder
- Android - 自定义带属性的控件
- Android WebView 实现JS相互调用 JsBridge
- Android Material Design 官网翻译学习笔记(开篇)
- 使用android support V7 Demo
- AndroidSample之ZoomActivity的学习
- Android 从相册中选择照片并返回
- sso package or sign error解决方案
- Android退出程序最佳方式
- Android4.4 5.0沉浸式状态栏