数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:
1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
5 网络存储数据
首先我们会介绍文件存储和SharedPreferences的使用。
文件存储
对于文件存储来说,使用方法和我们普通的java中得使用方法基本一样。代码片段如下:
File file = new File("/data/data/com.mxy/info.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write((username + "##" + password).getBytes());
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
这里我们需要先理解android的程序安装位置,安装路径为/data/data/包名,所以我们在我们应用程序所在的目录下创建文件。但是这时候我们写的是绝对路径,如果我们修改了我们程序的包名,那我们这里需要重新修改。Android工程师已经想到了这个问题,提供了获取对应路径的方法getFilesDir(),这时候返回值是/data/data/包名/files,片段如下:
//这种会由程序自动去构建前面的路径,但是需要知道上下文对象Context,这里直接使用的this,如果是外部方法,需要传入该参数
//获取的路径为/data/data/包名/files
File file = new File(this.getFilesDir(),"info.txt");
//保存到缓存目录
//File file = new File(this.getCacheDir(),"info.txt");
同时我们可以使用this.openFileOutput(name, mode)在路径路径为/data/data/包名/files创建名字为name的文件,这里面的mode 参考http://lsw1991abc.blog.163.com/blog/static/215941822012921111538676/ß
Context.MODE_APPEND
Context.MODE_PRIVATE;
Context.MODE_WORLD_READABLE;
Context.MODE_WORLD_WRITEABLE;
SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类,实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
/**
* sharedPerference实际是创建一个xml文件用于保存数据 路径为/data/data/包名/shared_perfs/xxx.xml
* 数据格式类似map
*/
case R.id.btn_save_sharedperference:
SharedPreferences sp = this.getSharedPreferences("config", this.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("username", "zhangsan");
editor.putString("password", "aabb");
editor.commit();
Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
break;
case R.id.btn_read_sharedperference:
SharedPreferences sp1 = this.getSharedPreferences("config", this.MODE_PRIVATE);
Toast.makeText(this, "username:" + sp1.getString("username", "username null") + " password:" + sp1.getString("password", "password null"), Toast.LENGTH_LONG).show();
break;
获取sd卡信息
//获取sd的信息
File file = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(file.getPath());
long blockSize = stat.getBlockSize();//获取每个Block的大小
long totalBlocks = stat.getBlockCount();//获取Block的总数
long availiableBlocks = stat.getAvailableBlocks();//获取可以使用的Block数目
String totalStr = android.text.format.Formatter.formatFileSize(MainActivity.this, totalBlocks * blockSize) ;
String availiableStr = android.text.format.Formatter.formatFileSize(MainActivity.this, availiableBlocks * blockSize) ;
Toast.makeText(MainActivity.this, "总内存:" + totalStr + ",剩余内存:" + availiableStr, Toast.LENGTH_LONG).show();
例子工程下载地址:http://download.csdn.net/detail/mengxiangyue/6997785
转载请注明出处:http://blog.csdn.net/mengxiangyue