Android:数据持久化(1/2)文件、SharedPreferences
2015-10-24 03:52
399 查看
Summary
持久化的3种方法:普通文件:I/O流操作文件;
SharedPreferences:XML文件,通过key-value pair的形式存储数据;
SQLite:Android自带数据库
p.s 除了非数据库的方法,其他两种文件存储方法都是使用文件,而且这些文件的目录在rom中定义,因此我们只需关注文件名即可。这么做的原因,我猜是为了方便开发者不用为厂商的各种定制而烦恼吧。
Description
普通文件
使用Android API提供的方法获取相应Input/Output流对象:Context.openInputFile(String fileName);
返回一个FileInputStream对象;
String fileName 为不含目录的文件名,默认目录为
/data/data/<package-name>/files/(Nexus系列);
Context.openOutputFile(String fileName, int mode);
返回FileOutputStream对象;
String fileName, 同上;
int mode 为文件的写入模式,分别有:
MODE_PRIVATE 默认方式,即写入的目标文件已经存在的话,直接覆盖原文件;
MODE_APPEND 在原文件后添加内容;
ps. 读取模式mode还有MODE_WORLD_READABLE和MODE_WORLD_WRITABLE两种,由于容易引起安全问题,已经在Android 4.2中被废除。
SharedPreferences
使用XML文件来对数据进行持久化,并通过操作SharedPreferences的对象来读写数据。Android提供了3种方法获取SharedPreferences对象:
Context.getSharedPreferences(String fileName, int mode);
String fileName 为XML文件的名称,默认目录为
/data/data/<package-name>/shared_prefs/(Nexus系列);
int mode 规定了文件的不同读写模式:
MODE_PRIVATE 只有当前app能对该文件进行读写;
MODE_MULTI_PROCESS 允许多个程序对该文件进行读写;
Activity.getPreferences(int mode);
使用Activity名作为文件名,所以只需要定义读写模式即可;
int mode 同上;
PreferenceManager.getDefaultSharedPreference(Context context);
使用当前app的包名作为前缀;
(3种获取SharedPreference对象的差别仅在于文件名称的定义,分别是自定义、Activity名和App名作为文件名)
/* 3 ways to get instance of SharedPreferences */ SharedPreferences prefs; prefs = this.getSharedPreferences("APPLE", MODE_PRIVATE);//Context.getSharedPreferences(String fileName, int mode) prefs = this.getPreferences(MODE_PRIVATE);//Activity.getPreferences(int mode) prefs = PreferenceManager.getDefaultSharedPreferences(this);
读取数据:
根据不同的数据类型,使用SharedPreferences对象的get方法即可:prefs.getString(String key, String defaultValue);
String key 为添加数据时使用的key(参考插入数据部分);
String defaultValue 通过key取回的数据如果为null时作为默认值代替null;
SharedPreferences prefs = this.getSharedPreferences("People", MODE_PRIVATE); String name = prefs.getString("name", "David"); int age = prefs.getInt("age", 0); int gender = prefs.getInt("gender", 0);
添加数据:
通过SharedPreferences.Editor来添加数据,要通过commit()来提交数据。SharedPreferences prefs = this.getSharedPreferences("People", MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit();//获取Editor对象 editor.putString("name", "Luffy"); editor.putInt("age", 32); editor.putInt("gender", 0); editor.putString("desc", "Are you kidding me?"); editor.commit(); editor.clear(); editor.putString("name", "Chalotte"); editor.putInt("age", 12); editor.putInt("gender", 0); editor.putString("desc", "God blesses"); editor.commit();
SQLite
Android自带数据库。由于数据库的操作相对复杂,另起篇章说明,详情请点击这里。
Reference 参考
《第一行代码:Android》郭霖(著)相关文章推荐
- android的actionbar为什么一直去不掉
- Android第三方之 -自动更新
- Android Service简介(系列1)
- Android第三方框架之xListView的使用方法
- 基于Android的CPU+GPU的异构编程开发,目前主要有以下几种平台
- Android视频播放(一)
- NDK编译Android字符界面的可执行程序
- android导入项目时 R文件错误
- Android自定制Toast显示外观
- Android Native Crash Capture SDK
- android 最优绘制圆图方法
- Android-获取系统的应用程序的信息
- 怎样搭高质量的Android项目框架,框架的结构具体描述?
- setOnPageChangeListener方法提示过期
- android framework层简单研究
- android中添加级联更新的下拉菜单
- android带参和不带参的页面跳转形式
- Android-多击事件处理
- Android【基础】 Gradle的初步使用
- Android--.9.png图片绘制说明