您的位置:首页 > 移动开发 > Android开发

Android自学笔记-8-Android数据存储1:文件、SharedPreferences和获取sd卡信息

2014-03-05 22:15 711 查看
数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: