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

来源:互联网 发布:linux 查看tomcat版本 编辑:程序博客网 时间:2024/06/09 08:30
数据存储在开发中是使用最频繁的,在这里主要介绍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/包名/filesFile 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



2 0
原创粉丝点击