Android学习17--Android的数据存储和IO
来源:互联网 发布:防水建材网络推广方案 编辑:程序博客网 时间:2024/05/21 17:54
1、使用SharedPreferences
有些时候,应用程序有少量的数据需要保存,而且这些数据的格式简单:都是普通的字符串、标量类型的值等,比如应用程序的各种配置信息(如是否发开音乐、是否使用振动效果等)、小游戏的玩家积分(如扫雷英雄榜之类的)等,对于这种数据,Android提供了SharedPreferences进行保存。
(1)SharedPreferences和Editor简介
SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。
SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法访问SharedPreferences中的key-value对:
boolean contains(String key):判断SharedPreferences是否包含特定key的数据。
abstract Map<String,?> getAll():获取全部的key-value对。
boolean getXxx(String key,xxx defValue):获取SharedPreferences数据里指定key对应的value。如果key不存在,返回默认值defValue。其中xxx可以是boolean、float、int、long、String等各种基本类型。
SharedPreferences接口并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它对应的Editor对象,Editor提供如下方法向SharedPreferences写入数据:
SharedPreferences.Editor clear():清空SharedPreferences里的所有数据。
SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences存入指定key对应的数据。其中xxx可以是boolean、float、int、long、String等各种基本类型。
SharedPreferences.Editor remove(String key):删除SharedPreferences里指定key对应的数据项。
boolean commit():当Editor编辑完成后,调用该方法提交修改。
SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法获取SharedPreferences实例,第二个参数支持如下几个值:
Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读写。
Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其它应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其它应用程序读、写。
SharedPreferences数据总是保存在/data/data/<package name>/shared_prefs目录下,以XML格式保存,根元素为<map.../>.
(2)、读、写其它应用SharedPreferences
在某个应用程序的SharedPreferences指定相应的访问权限之后(MODE_WORLD_READABLE可被其它应用程序读取,MODE_WORLD_WRITEABLE可被其它应用程序读写),可以在其它应用程序对之前所说应用程序的SharedPreferences进行操作:
a、创建其它程序对应的Context,例如如下代码:
useCount=createPackageContext(“org.lxj.io”,Context.CONTEXT_IGNORE_SECURITY);其中“org.lxj.io”是其它程序的包名
b、调用其它程序Context的getSharedPreferences(String name,int mode)即可获取相应的SharedPreferences对象,示例代码如下:
SharedPreferences prefs=useCount.getSharedPreferences(“count”,Context.MODE_WORLD_READABLE);
c、如果需要写入数据,调用edit()方法获取Editor即可。
2、File存储
(1)openFileOutput和openFileInput
Context提供了如下两个方法来打开应用程序的数据文件夹里的文件IO流:
FileInputStream openFileInput(String name):打开应用程序的数据文件夹下的name文件对应输入流。
FileOutputStream openOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应输出流。第二个参数指定打开文件模式:
MODE_PRIVATE:该文件只能被当前程序读写。
MODE_APPEND:以追加方式打开该文件,应用程序可向该文件中追加内容。
MODE_WORLD_READABLE:该文件的内容可被其它程序读取。
MODE_WORLD_WRITEABLE:该文件的内容可由其它程序读、写。
除此外,Context还提供如下方法访问应用程序的数据文件夹:
getDir(String name,int mode):在应用程序的数据文件夹下获取或创建name对应的子目录。
File getFilesDir():获取该应用程序的数据文件夹的绝对路径。
String[ ] fileList():返回该应用程序的数据文件夹下的全部文件。
deleteFile(String):删除该应用程序的数据文件夹下的指定文件。
(2)、读写SD卡上的文件
为了更好地存、取应用程序的大文件数据,应用程序需要读、写SD卡上的文件。SD卡大大扩充手机的存储能力。
读、写SD上的文件按如下步骤:
a、调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序有读写SD卡的权限。示例代码如下:
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED):如果插入SD卡,并且程序有读写SD卡的权限,返回true
b、调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录。
c、使用FileInputStream、FileOutputStream、FileReader或FileWriter读、写SD卡里的文件。
d、为了有读写SD的权限,在AndroidAManifest.xml文件中要添加如下两条配置:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYATEMS">(在SD卡中创建和删除文件权限)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">(向SD卡写入数据权限)
- Android学习17--Android的数据存储和IO
- Android的数据存储和IO
- Android数据存储和IO
- android学习—数据存储和IO-SharedPreference和Editor
- android学习—数据存储和IO-SharedPreference和Editor
- Android笔记----Android的数据存储和IO操作
- Android笔记----Android的数据存储和IO操作
- Android的数据存储和IO-SD卡文件浏览器
- Android的数据存储和IO - 自动朗读(TTS)
- Android的数据存储与IO - 手势
- Android学习笔记十二.Android数据存储与IO.SharedPreferences
- Android学习笔记十四.Android数据存储与IO.SD卡的读写实例
- android 之数据存储(IO)
- Android数据存储与IO
- Android数据存储与IO
- Android数据存储之IO
- Android数据存储与IO
- Android数据存储与IO
- linux开发资源整理列表 --已备查询之便
- 上班一天
- C中数组陷阱
- win7常用dos命令大全!
- iPhone/iPad开发扎记 2012/02/18
- Android学习17--Android的数据存储和IO
- 作业君
- Android: 在WebView中获取网页源码
- FTP setup in Ubuntu
- 用javascript查看谷歌地图的坐标
- 用JS去掉IE窗口的标题栏,工具栏,地址栏
- [Balkan 2011]Timeismoney
- Grsecurity ACL系统
- ubuntu11.04上cloudera cdh3u0的hadoop和hbase分布式安装