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

Android应用程序对SD卡数据的写入和读取

2014-09-17 21:25 295 查看


Android应用程序对SD卡数据的写入和读取

首先要说明一下,Android4.0及以上SD卡的位置为"mnt/sdcard/";

但是由于不同Androidb版本SD卡的路径不同,所以我们最好可以通过Android提供的方法得到SD卡的路径,代码如下:
path = Environment.getExternalStorageDirectory().getAbsolutePath();


还有就是如果写入和读取的数据较大,建议新建类在后台进行操作,如果仅仅是保存读取一些简单的程序数据,可以直接在Activity中进行操作,以下代码都在Activity中操作。


首先是对于相关权限的申请:

<!-- 在SD卡中创建和删除文件的权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 在SD卡中写入数据的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


还要注意对SD卡是否存在并已正常挂载进行判断:

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED){ }


先说写入数据的方法:(注意文件读写要进行异常处理)

写入SD卡数据时,我们要先判断SD卡是否挂载正常,然后新建一个文件File,再新建一个字节输出流,之后我们可以直接通过该输出流写入字节数据,或者可以将其包装成一个字符输出流Wirter再进行写入操作,注意在写入数据后要对输出流进行flush()操作,强制将缓冲区的内容输出,最后关闭输出流。

操作代码如下:
try {
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "info.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
outputStreamWriter.write("This is a text");
outputStreamWriter.flush();
outputStreamWriter.close();
fileOutputStream.close();
Toast.makeText(MainActivity.this, "写入成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "请检查SD卡是否存在", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "发生错误,写入失败", Toast.LENGTH_LONG).show();
}


再说读取数据的方法:(注意文件读写要进行异常处理)

读取SD卡数据时,我们可以先新建一个文件File,然后新建一个字节输入流,之后我们可以将其包装成一个字符输入流Reader再进行读取操作。

操作代码如下:
try {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory(), "info.txt");
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
char[] input = new char[fileInputStream.available()];
inputStreamReader.read(input);
inputStreamReader.close();
fileInputStream.close();
String data= new String(input);
Toast.makeText(MainActivity.this, data, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "请检查SD卡是否存在", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, "发生错误,读取失败", Toast.LENGTH_LONG).show();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: