Android两种最简单的数据存储:Shared Preferences和Files存储
2012-01-07 14:51
351 查看
I、数据存储之Shared Preferences:
很多时候我们开发的软件需要向用户提供软件参数设置功能,Android应用,我们最适合采用什么方式保存软件配置参数呢?在Android平台上,提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,使用简易的键值对存储。文件存地方在在/data/data/<packagename>/shared_prefs目录下。下面我们给点代码,说下简单的使用:
这样,我们就把信息存储到了/data/data/<packagename>/shared_prefs/Login.xml文件里面,现在你打开这个文件,就可以看到内容已经被存储。如下:
getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,最好定义为一个静态字符串,另外,名称如上面所示,不用带后缀名,后缀名会由系统自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式想必大家都有一定的了解。如果不大清楚的同学请自行查看API。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
如果你保存成功了,并且在对应目录下找到了Login.xml文件,打开发现有数据。下面我们来说说打开文件读取数据。如果是在同一个项目程序中(不同的Activity没有关系),我们可以直接打开这个文件读取使用里面的数据,打开代码如下:
2.如果你是在别的一个项目中需要调用到这个项目中的文件。你需要通过createPackageContext方法取到这个项目的Context。并且用这个Context取到文件。
II、数据存储之:Files
基础使用请参考:http://user.qzone.qq.com/997300235/blog/1315365981
这里我只说明,其实Files存储的一个Files可以存储多个变量,那么如何使用呢。具体看代码实例:
对应读取为:
PS:1.参考网站信息:
http://blog.csdn.net/aomandeshangxiao/article/details/6830481
http://user.qzone.qq.com/997300235/blog/1315362274
http://user.qzone.qq.com/997300235/blog/1315365981
2.方便以后再次碰到使用
很多时候我们开发的软件需要向用户提供软件参数设置功能,Android应用,我们最适合采用什么方式保存软件配置参数呢?在Android平台上,提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,使用简易的键值对存储。文件存地方在在/data/data/<packagename>/shared_prefs目录下。下面我们给点代码,说下简单的使用:
public final static String FileName = "Login";public void save() { try { // 取得活动的SharedPreferences对象,设置其属性是其他程序也可以读 SharedPreferences uiState = getSharedPreferences(FileName, Context.MODE_WORLD_READABLE); // 取得编辑对象 SharedPreferences.Editor editor = uiState.edit(); // 添加值 editor.putBoolean("m_CheckBox_Save_Check", false); // 是否自动保存密码 editor.putBoolean("m_CheckBox_AutoLogin_Check", true); // 是否自动登陆 editor.putString("leiXing", "学生"); editor.putString("zhangHao", "123456"); editor.putString("miMa", "0"); // 提交保存 editor.commit(); Log.v("Login save", "登陆信息保存成功"); } catch (Exception e) { Toast.makeText(Login.this, "保存信息失败!", Toast.LENGTH_SHORT).show(); return; } return; }
这样,我们就把信息存储到了/data/data/<packagename>/shared_prefs/Login.xml文件里面,现在你打开这个文件,就可以看到内容已经被存储。如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="miMa">0</string> <string name="zhangHao">123456</string> <boolean name="m_CheckBox_Save_Check" value="true" /> <boolean name="m_CheckBox_AutoLogin_Check" value="false" /> <string name="leiXing">学生</string> </map>
getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,最好定义为一个静态字符串,另外,名称如上面所示,不用带后缀名,后缀名会由系统自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式想必大家都有一定的了解。如果不大清楚的同学请自行查看API。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
如果你保存成功了,并且在对应目录下找到了Login.xml文件,打开发现有数据。下面我们来说说打开文件读取数据。如果是在同一个项目程序中(不同的Activity没有关系),我们可以直接打开这个文件读取使用里面的数据,打开代码如下:
SharedPreferences sharedPreferences = getSharedPreferences( FileName, Context.MODE_WORLD_READABLE); // getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值 m_CheckBox_Save_Check = sharedPreferences.getBoolean( "m_CheckBox_Save_Check", false); m_CheckBox_AutoLogin_Check = sharedPreferences.getBoolean( "m_CheckBox_AutoLogin_Check", false); LeiXing = sharedPreferences.getString("LeiXing", "学生"); zhangHao = sharedPreferences.getString("zhangHao", ""); miMa = sharedPreferences.getString("miMa", "");
2.如果你是在别的一个项目中需要调用到这个项目中的文件。你需要通过createPackageContext方法取到这个项目的Context。并且用这个Context取到文件。
II、数据存储之:Files
基础使用请参考:http://user.qzone.qq.com/997300235/blog/1315365981
这里我只说明,其实Files存储的一个Files可以存储多个变量,那么如何使用呢。具体看代码实例:
public void save() { Properties properties = new Properties(); properties.put("theme_value", "0"); properties.put("size_value1", "1"); properties.put("size_value2", "2"); properties.put("size_value3", "3"); try { FileOutputStream Stream_theme = this.openFileOutput( "theme_save.cfg", Context.MODE_WORLD_WRITEABLE); properties.store(Stream_theme, ""); } catch (FileNotFoundException e) { return; } catch (IOException e) { return; } }
对应读取为:
void load() { Properties properties = new Properties(); try { FileInputStream Stream_theme = this.openFileInput("theme_save.cfg"); properties.load(Stream_theme); } catch (FileNotFoundException e) { return; } catch (IOException e) { return; } Log.v("ActivityParent", properties.get("theme_value").toString()); theme_int = Integer.parseInt(properties.get("theme_value").toString()); size[0] = (float) Double.parseDouble(properties.get("size_value1") .toString()); size[1] = (float) Double.parseDouble(properties.get("size_value2") .toString()); size[2] = (float) Double.parseDouble(properties.get("size_value3") .toString()); }
PS:1.参考网站信息:
http://blog.csdn.net/aomandeshangxiao/article/details/6830481
http://user.qzone.qq.com/997300235/blog/1315362274
http://user.qzone.qq.com/997300235/blog/1315365981
2.方便以后再次碰到使用
相关文章推荐
- Android 数据存储 利用SQLiteDatabase实现简单的学生管理
- Android:SharedPreferences最简单的数据存储
- Android-02:使用SharedPreferences存储简单数据
- Adnroid中的数据存储大全,以及ActiveAndroid的简单使用
- Android数据存储简单介绍
- android 将简单的数据存储到本地-SharedPreferences
- android之简单数据存储Preference
- Android 小项目之--数据存储【Files】
- Android 小项目之--数据存储【Files】(附源码)
- Android数据持久化存储-Files对象
- android数据存储方式(三)----Files
- android之-----SharedPreferences(存储数据)简单使用
- android数据存储_SharedPreferences的简单使用
- [置顶] Android数据存储之SQLite简单用法
- Android数据存储(3)SQLite简介和简单的登录与注册源代码
- Android数据存储SharedPreference用法简单示例
- Android开发教程 --- 数据存储(1) Shared Preferences、 Files、NetWork
- Android 小项目之--数据存储【Files】(附源码)
- Android数据存储之间Files
- android数据存储-->Files