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(); }
相关文章推荐
- 【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]
- Android应用程序本地数据的写入和读取
- Android数据读取 写入操作(SD卡文件存储、SharedPreferences存储)
- android读写sd卡操作写入数据读取数据示例
- 【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]
- Android SD卡数据的读取
- Android android下的数据持久化和读取数据,保存数据到手机及SD卡
- Android往sdcard写入读取数据
- 【Android开发小记--20】读取与写入XML格式数据
- 封装android 通讯使用二进制进行数据交换 2个必要的读取,写入操作
- 转-Android 之 使用File类在SD卡中读取数据文件
- Android 之 使用File类在SD卡中读取数据文件
- Android中使用照相机权限、在SD卡创建和删除文件权限、在SD卡中写入数据权限
- 4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
- Android使用sd卡保存读取数据
- Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据
- Android获取assets文件夹中的数据并写入SD卡示例
- android 向SD卡写入数据
- android中读取SD卡上的数据
- android(安卓)sd卡写入 读取文件的例子