Android-SD卡的读写
2015-06-23 22:06
316 查看
步骤1、在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置:
<!-- SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
步骤2、了解Environment类的几个常用的静态方法
1: getDataDirectory() 获取到Android中的data数据目录(sd卡中的data文件夹)
2:getDownloadCacheDirectory() 获取到下载的缓存目录(sd卡中的download文件夹)
3:getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard(/storage/sdcard0)
4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写)还有其他的一些状态,可以在文档中进行查找。
5:getRootDirectory() 获取到Android Root路径
步骤3、具体读写方式:
(1)判断SD卡是否存在
(2)获取SD卡根目录
(3)获取默认的文件存放路径
(4)读取文件
(5)写入文件
<!-- SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
步骤2、了解Environment类的几个常用的静态方法
1: getDataDirectory() 获取到Android中的data数据目录(sd卡中的data文件夹)
2:getDownloadCacheDirectory() 获取到下载的缓存目录(sd卡中的download文件夹)
3:getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard(/storage/sdcard0)
4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写)还有其他的一些状态,可以在文档中进行查找。
5:getRootDirectory() 获取到Android Root路径
步骤3、具体读写方式:
(1)判断SD卡是否存在
/** * 判断SDCard是否存在 [当没有外挂SD卡时,内置ROM也被识别为存在sd卡] * * @return */ public static boolean isSdCardExist() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); }
(2)获取SD卡根目录
/** * 获取SD卡根目录路径 * * @return */ public static String getSdCardPath() { boolean exist = isSdCardExist(); String sdpath = ""; if (exist) { sdpath = Environment.getExternalStorageDirectory() .getAbsolutePath(); } else { sdpath = "不适用"; } return sdpath; }
(3)获取默认的文件存放路径
/** * 获取默认的文件路径 * * @return */ public static String getDefaultFilePath() { String filepath = ""; File file = new File(Environment.getExternalStorageDirectory(), "abc.txt"); if (file.exists()) { filepath = file.getAbsolutePath(); } else { filepath = "不适用"; } return filepath; }
(4)读取文件
try { File file = new File(Environment.getExternalStorageDirectory(), "test.txt"); FileInputStream is = new FileInputStream(file); byte[] b = new byte[inputStream.available()]; is.read(b); String result = new String(b); System.out.println("读取成功:"+result); } catch (Exception e) { e.printStackTrace(); }
(5)写入文件
try { File file = new File(Environment.getExternalStorageDirectory(), DEFAULT_FILENAME); FileOutputStream fos = new FileOutputStream(file); String info = "I am a chinanese!"; fos.write(info.getBytes()); fos.close(); System.out.println("写入成功:"); } catch (Exception e) { e.printStackTrace(); }
相关文章推荐
- 安装Android时 sdk manager解决方案
- ubuntu 14.10 安装android NDK
- Google《Android性能优化》学习笔记
- Android Looper.class
- Android开发之Intent
- Android模拟多线程的断点下载
- Android通讯录数据库介绍与基本操作(增删改查)
- android的布局xml文件如何添加注释?
- Android开发:GridView与ListView相互切换(动画效果)
- Android中Fragment的知识
- Android OpenGL ES(三)----编程框架
- 安卓xml布局中 android:paddingBottom="@dimen/activity_vertical_margin"是什么意思?
- Android 图片裁剪 超出内存
- Android实战简易教程-第二十枪(GridView长按显示删除)
- android 伸缩控件ExpandableListView 展开失败的可能原因。
- android布局之 GridLayout的使用
- Activity的七大生命周期
- android-textview
- 通过Intent传输图片导致广播消息异常的问题根因分析(通过分析Android源码反向推理)
- Android 通知栏ANR原因