Android数据存储五种方式总结
Android平台进行数据存储的五大方式
1 使用SharedPreferences存储数据
2 SQLite数据库存储数据
3使用ContentProvider存储数据
4 文件存储数据
5 网络存储数据
1.使用SharedPreferences存储数据
SharePreferences是用来存储一些简单配置信息的一种机制,使用Map数据结构来存储数据,以键值对的方式存储,采用了XML格式将数据存储到设备中。例如保存登录用户的用户名和密码。只能在同一个包内使用,不能在不同的包之间使用,其实也就是说只能在创建它的应用中使用,其他应用无法使用。
如何修改和存储数据
- 根据Context的getSharedPrerences(key, [模式])方法获取SharedPreference对象;
- 利用SharedPreference的editor()方法获取Editor对象;
- 通过Editor的putXXX()方法,将键值对存储数据;
- 通过Editor的commit()方法将数据提交到SharedPreference内。
代码如下:
private String print() {
StringBuffer buff = new StringBuffer();
BufferedReader reader= null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(PATH)));
String str;
while ((str = reader.readLine()) != null) {
buff.append(str + "/n");
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d("1111111", buff.toString());
return buff.toString();
}
2.Android本身的数据库(SQLite数据库)
SQLite是一个轻量级的嵌入式数据库,是Andriod所带的一个标准的数据库,只有五种数据类型,分别是:NULL(空值)、INTEGER(整数)、REAL(浮点数)、TEXT(字符串)、BLOB(二进制数据)。其支持统一的SQL语句,可以利用SQL语句对数据进行增、删、改、查。
使用DatabaseHelper类继承SQliteOpenHelper类,并重写onCreate和onUpgrade方法。在onCreate()方法中首先构造一条SQL语句,然后调用db.execSQL(sql)执行SQL语句。SQliteOpenHelper是一个辅助类,此类主要用于生成一个数据库,并对数据库的版本进行管理。当调用这个类的方法getWritableDatabase()或getReadableDatabasw()方法时,如果当时没有数据,那么Android系统就会自动生成一个数据库。
3.ContentProvider存储
Android中的两个程序之间进行数据交换就是通过ContentProvider实现的。ContentProvider类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。在程序内可以通过实现Content Provider的抽象接口将自己的数据显示出来。外界可以通过这套标准、统一的接口和程序中的数据实现交互,既可以读取程序中的数据,也可以删除程序中的数据。
比较常见的接口是ContentResolver,外部程序可以通过ContentResolver接口访问ContentProvider提供的数据。在Activity中可以通过getContentResolver()得到当前应用的ContentResolver实例。ContentResolver提供的接口需要和ContentProvider中需要实现的接口相对应,常用的接口主要有以下几个:
query(Uri uri, String[] projection, String selection, String[] selectionArgs,StringsortOrder):通过Uri进行查询,返回一个Cursor;
insert(Uri url, ContentValues values):将一组数据插入到Uri指定的地方
updata(Uri uri, ContentValues values, String where, String[] selectionArgs):更新Uri指定位置的数据
delete(Uri url, String where, String[] selectionArgs):删除指定Uri且符合一定条件的数据。
4.文件存储数据
分为内部储存和外部存储。内部存储是应用程序使用Android为自己分配的内存空间,数据存储到“/data/data/程序包名/files”路径下的相应文件中。外部存储是使用手机sdcard的内存(这个sdcard并不是我们经常说的那个可以拆卸替换的SD卡,那个SD卡我们称之为扩展卡),使用这部分内存要声明相应的权限。
1.assets(只读、不能修改或删除)
代码如下:
try {
//创建流
InputStream in = this.getAssets().open(“文件名.扩展名”);
//读出数据
Bitmap bm=BitmapFactory.decodeStream(in);
in.close();
in=null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.读写数据(读写手机自身内存)
位置:data/data/主包名/files目录下的 || 也可以使用context.getFilesDir().getAbsolutePath()获得内存根路径
存:
try {
OutputStream os=this.openFileOutput(“文件名”, MODE_PRIVATE);
os.write(“wa”.getBytes());
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
取:
try {
InputStream in=this.openFileInput(“文件名”);
//缓冲区
byte b[]=new byte[1024];
//创建缓存
ByteArrayBuffer ba=new ByteArrayBuffer(0);
int l;
//读
while((l=in.read(b))>-1)
{
ba.append(b,0,l);
}
//转化
String s=new String(ba.toByteArray());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
5.网络存储数据
网络:利用HTTPURLConnection对象或者HttpClient对象,我们可以从网络中获取数据(例如加载服务器端数据,加载service数据等)
上一篇: java中数据的5种存储位置
推荐阅读
-
常见的四种POST 提交数据方式(小总结)
-
Android图片压缩几种方式总结
-
Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用
-
Android Activity之间的数据传递方法总结
-
Android使用文件进行数据存储的方法
-
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
-
android中使用SharedPreferences进行数据存储的操作方法
-
Android SharedPreferences实现数据存储功能
-
Android中Fragment的加载方式与数据通信详解
-
以代码实例总结iOS应用开发中数据的存储方式