Android 数据存储
Android中数据存储的方式有一下几种:
一.SharedPreferences :
是一种轻量级的数据存储方式,主要用于保存应用的一些常用配置,以xml 文件的方式存储数据,
以键值对的方式存取数据。
SharedPreferences 的类型(MODE):
MODE_PRIVATE :私有类型,只允许本应用使用,这个为默认类型
MODE_APPEND :如果SharedPreferences 文件已经存在,则数据写入这个文件的末尾
MODE_WORLD_READABLE : 允许其他app读取数据 ,这个值在API 17 被废除了(可能为了保护数据安全)
MODE_WORLD_WRITEABLE : 允许其他app写入数据 ,这个也是 在 API 17 废除
获取SharedPreferences 的两种方式:
getSharedPreferences(String name,int MODE);获得的对象可以被同一应用程序下的其他组件共享
getPreferences(); 获得的SharedPreferences对象只能在该Activity中使用.
保存数据:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
SharedPreferences.Editor editor = sp.edit();
editor.put(String key,String value);
editor.commit(); 提交数据
读取数据:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
String value = sp.get(String key);
二.基于Java IO 方式的 file:
IO操作数据有两种不同的类型:私有的file,存放在data/data/目录下, 另一个是对SDcard操作
1.私有file:
保存数据:MODE 和SharedPreferences 一样
FileOutputStream fo = Context.openFileOutput(String name,int MODE)
读取数据:
FileInputStream fi = Context.openFileInput(String name)
2.对SDCard 的数据进行操作:这里涉及到一个 Environment 类,它是用来管理Android 内部存储和SDcard的
其中包含了sdcard的一些字段 表示sd卡当前的状态:
MEDIA_BAD_REMOVAL 在没有挂载前存储媒体已被移除
MEDIA_CHECKING 正在检查存储媒体
MEDIA_MOUNTED 存储媒体已挂载,并且挂载点可读写
MEDIA_MOUNTED_READ_ONLY 存储媒体已挂载,但只可读
MEDIA_NOFS 存储媒体是空白或不支持的文件系统
MEDIA_REMOVED 存储媒体被移除
MEDIA_SHARED 存储媒体正在通过USB共享
MEDIA_UNMOUNTABLE 存储媒体无法挂载
MEDIA_UNMOUNTED 存储媒体没有挂载
Environment 中的一些静态方法:
获取Android 根目录 File root = Environment.getRootDirectory();
获取data目录 File data = Environment.getDataDirectory();
获取 Android 下载/缓存内容目录 File file = Environment.getDownloadCacheDirectory();
获取SDCard状态 :Environment.getExternalStorageState();
获取SDCard根目录:File root = Environment.getExternalStorageDirectory();
对SDCard进行数据存取的话,首先获取sdcard 的状态,判断sdcard是挂载,如果挂载了sdcard
则获取Sdcard 的根目录,然后和自己创建的文件的目录拼接成一个文件的存放目录,最后用IO即可
(这里有个小细节:File类型的量可以和字符串直接用“+”拼接,然后变成字符串)
File root = Environment.getExternalStorageDirectory();//获取sdcard根目录
File file = new File(root+File.separator+"MyFile.txt"); separator 为路径分隔符
三.SQLite 数据库:
Android 内置的SQLite是一种轻量级的数据库,SQL数据库的功能它基本都有
Android操作SQLite涉及到两个类 :
SQLiteDataBase :SQLite数据库类,这个类没有构造函数,其对象是通过SQLiteOpenHelper 类获取的
这类具有数据库的增删查改等方法,还可以调用execSQL() 方法来执行标准的SQL语句
SQLiteOpenHelper :数据库辅助类,这个类是用来获取已有的数据库 或者 创建新的数据库以及数据库
版本号。SQLiteOpenHelper中有两个抽象方法,用于创建数据库中的表格,和升级数据库用 的,这两个方法需要用户自己去实现
创建一个类MyDataBase继承 SQLiteOpenHelper
public MyDataBase(Context context){ 构造函数
super(Context context,String dataBaseName,null,int DataBaseVersion);父类构造函数
}
实现其中的抽象方法:
onCreate(SQLiteDataBase db){
db.execSQL(String s); 在次执行SQL语句创建表格
}
onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){} 当数据库版本号改变是调用
四.ContentProvider 数据共享:
五.基于 Java Socket/http 的网络存储 :