Android数据存储于IO

来源:互联网 发布:淘宝联盟分享赚互刷 编辑:程序博客网 时间:2024/06/05 00:40

Preface

Java IO中的编程经验大部分都可“移植”到Android应用开发商,Android本身也专门提供了一些IO API,通过这些API可以更有效地进行输入输出;
如果应用程序只有少量数据需要保存,那么使用普通文件就可以了;但如果应用程序有大量数据需要存储、访问,就需要借助于数据库了,Android系统内置了SQLite数据库,SQLite数据库是一个真正轻量级的数据库,没有后台,整个数据库就对应于一个文件。

SharedPreferences

SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对;读入数据提供的接口:contains,getAll,getXxx;
SharedPreferences接口本身没有提供写入数据的能力,而是通过SharedPreferences的内部接口实现,调用edit()方法即可获取它所对应的Editor对象。写入数据提供的方法:clear,putXxx, remove, commit; 当Editor编辑完成后,使用commit方法提交修改。
SharedPreferences本身是一个接口,无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,其中,第二个参数支持的值:

  • Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写;
  • Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写;
  • Context.MODE_WORLD_WAITABLE:指定该SharedPreferences数据能被其他应用程序读、写;

SharedPreferences数据总是保存在/data/data/package name/shared prefs目录下,总以XML文件形式保存;根元素是map;
访问其他程序的SharedPreferences的关键就是获取其他应用程序的Context。Context代表了访问该Android应用的全局信息的接口,而Android应用的报名正是该应用的唯一标识,程序可以根据Android应用的报名来获取对应的Context。

  • createPackageContext(“com.abc.io”, Context.CONTEXT_IGNORE_SECUITY);
  • 使用getSharedPreferences;
  • 如果写入数据,调用SharedPreferences的edit()方法获取Editor即可;

File存储

openFileOutput和openFileInput

Context提供打开本应用程序的数据文件里的文件IO流;

  • FileInputStream openFileOutput(String name): 打开应用程序的数据文件夹下的name文件对应输入流;
  • FileOutputStream openFileInput(String name, int mode): 打开应用程序的数据文件夹下的name文件对应的输出流;
    第二个参数支持的值:
    • MODE_PRIVATE:
    • MODE_APPEND:
    • MODE_WORLD_READABLE:
    • MODE_WORLD_WAITEABLE:

访问应用程序的数据文件夹:getDir,getFilesDir, fileList, deleteFile;

读写SD卡

Steps

  • 调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡
  • 调用Environment的getExternalStorageDirectory()方法来获取外部存储器;
  • 使用FileInputStream、FileOutputStrean、FileReader或FileWriter读、写SD卡里的文件;注意,是否有权限;

SQLite

轻量级数据存储,不是很常用;

0 0