SharedPreferences介绍 (重点) 用来做数据存储
sharedPreferences是通过xml文件来做数据存储的。
一般用来存放一些标记性的数据,一些设置信息。
<1>使用sharedPreferences存储数据
1.通过Context对象创建一个SharedPreference对象
//name:sharedpreference文件的名称 mode:文件的操作模式
SharedPreferences sharedPreferences = context.getSharedPreferences("userinfo.txt", Context.MODE_PRIVATE);
2.通过sharedPreferences对象获取一个Editor对象
Editor editor = sharedPreferences.edit();
3.往Editor中添加数据
editor.putString("username", username);
editor.putString("password", password);
4.提交Editor对象
editor.commit();
<2>使用sharedPreferences读取数据
1.通过Context对象创建一个SharedPreference对象
SharedPreferences sharedPreferences = context.getSharedPreferences("userinfo.txt", Context.MODE_PRIVATE);
2.通过sharedPreference获取存放的数据
//key:存放数据时的key defValue: 默认值,根据业务需求来写
String username = sharedPreferences.getString("username", "");
String password = sharedPreferences.getString("password", "");
通过PreferenceManager可以获取一个默认的sharepreferences对象
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
各种存储的优劣:
1. 简单数据和配置信息,SharedPreference是首选;
2. 如果SharedPreferences不够用,那么就创建一个数据库
3. 结构化数据,一定要创建数据库,虽然这稍显烦锁,但是好处无穷
4. 文件就是用来存储文件(也即非配置信息或结构化数据),如文本文件,二进制文件,PC文件,多媒体文件,下载的文件等等。
5. 尽量不要创建文件
6. 如果创建文件,如果是私密文件或是重要文件,就存储在内部存储,否则放到外部存储
7. 能用简单的方式处理,就不要用复杂的方式,存储几个数据或简单对象,用SharedPreference也能做到,何必还去写个ContentProvider。
几个获取文件目录的API
1、Context.openFileOutput(string,Context.MODE_PRIVATE); 打开一个文件输出流
// File file = new File(context.getCacheDir(),"info.dat");
// FileOutputStream fos = new FileOutputStream(file);
//上面两句等同于下面这一句代码:
FileOutputStream fos = context.openFileOutput("info.dat", Context.MODE_PRIVATE);
2、Context.openFileInput(string); 打开一个文件输入流
// File file = new File(context.getCacheDir(),"info.dat");
// FileInputStream fis = new FileInputStream(file);
//上面两句等同于下面这一句代码:
FileInputStream fis = context.openFileInput("info.dat");
3、Context.getCacheDir(); 获取的目录:/data/data/当前应用程序包名/cache/
context.getCacheDir();//data/data/当前应用程序包名/cache/
4、Context.getFilesDir(); 获取的目录:/data/data/当前包名/files/