【Android】数据存储之SDcard

来源:互联网 发布:力士乐plc编程软件 编辑:程序博客网 时间:2024/05/30 23:49



SD卡有时候可能因为用户将其挂载在PC上,或者设为只读,或者没有插入SD卡,所以使用SD卡存储数据之前必须检测SD卡是否可用。


1.在清单文件中加入:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这样为我们读写SD卡提供了权限。

2.获取SD卡的状态使用:

Environment.getExternalStorageState()

所以检测是否可以写的语句为:

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

所以往SD卡读取文件的代码如下:

public String getFileFromSdcard(String filename) {FileInputStream fileInputStream = null;//缓冲区,和磁盘无关,不需要关闭ByteArrayOutputStream outputStream = new ByteArrayOutputStream();File file = new File(Environment.getExternalStorageDirectory(),filename);if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {try {fileInputStream = new FileInputStream(file);int len = 0;byte[] data = new byte[1024];while((len = fileInputStream.read(data))!= -1){outputStream.write(data, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if (fileInputStream != null){try {fileInputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}return new String(outputStream.toByteArray());}

写入文件代码如下:

public boolean saveContentToSdcard(String filename, String content) {boolean flag = false;FileOutputStream fileOutputStream = null;// 获得sdcrad所在的路径File file = new File(Environment.getExternalStorageDirectory(),filename);// 判断sdcard是否可用if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {try {fileOutputStream = new FileOutputStream(file);fileOutputStream.write(content.getBytes());flag = true;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}return flag;}


原创粉丝点击