SD卡的读写是我们在开发android 应用程序过程中最常见的操作。下面介绍SD卡的读写操作方式:

1. 获取SD卡的根目录

  1. String  sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath();

2. 在SD卡上创建文件夹目录

  1. /**
  2. * 在SD卡上创建目录
  3. */
  4. public File createDirOnSDCard(String dir)
  5. {
  6. File dirFile = new File(sdCardRoot + File.separator + dir +File.separator);
  7. Log.v("createDirOnSDCard", sdCardRoot + File.separator + dir +File.separator);
  8. dirFile.mkdirs();
  9. return dirFile;
  10. }

3. 在SD卡上创建文件

  1. /**
  2. * 在SD卡上创建文件
  3. */
  4. public File createFileOnSDCard(String fileName, String dir) throws IOException
  5. {
  6. File file = new File(sdCardRoot + File.separator + dir + File.separator + fileName);
  7. Log.v("createFileOnSDCard", sdCardRoot + File.separator + dir + File.separator + fileName);
  8. file.createNewFile();
  9. return file;
  10. }

4.判断文件是否存在于SD卡的某个目录

  1. /**
  2. * 判断SD卡上文件是否存在
  3. */
  4. public boolean isFileExist(String fileName, String path)
  5. {
  6. File file = new File(sdCardRoot + path + File.separator + fileName);
  7. return file.exists();
  8. }

5.将数据写入到SD卡指定目录文件

  1. <span style="white-space:pre">  </span>/**
  2. * 写入数据到SD卡中
  3. */
  4. public File writeData2SDCard(String path, String fileName, InputStream data)
  5. {
  6. File file = null;
  7. OutputStream output = null;
  8. try {
  9. createDirOnSDCard(path);  //创建目录
  10. file = createFileOnSDCard(fileName, path);  //创建文件
  11. output = new FileOutputStream(file);
  12. byte buffer[] = new byte[2*1024];          //每次写2K数据
  13. int temp;
  14. while((temp = data.read(buffer)) != -1 )
  15. {
  16. output.write(buffer,0,temp);
  17. }
  18. output.flush();
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. finally{
  23. try {
  24. output.close();    //关闭数据流操作
  25. } catch (Exception e2) {
  26. e2.printStackTrace();
  27. }
  28. }
  29. return file;
  30. }

 one more important thing:

      对SD卡的操作,必须要申请权限:

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

转自:http://blog.csdn.net/newjerryj/article/details/8829179

Android入门开发之SD卡读写操作(转)的更多相关文章

  1. Android开发之SD卡上文件操作

    1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...

  2. android 64 sd卡读写的操作

    package com.itheima.writesd; import java.io.File; import java.io.FileNotFoundException; import java. ...

  3. Android安全开发之ZIP文件目录遍历

    1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在“../”的字符串,攻击者可以利用多个“../”在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件.如果被覆盖掉的文件是动态链接s ...

  4. Android 数据库SQLite 写入SD卡

    如果手机没有root,数据库文件是无法查看到的,不方便调试. 最好的办法是把数据库写进SD卡. 修改的地方有两处: 1.在你的helper类中把数据库文件名称 DATABASE_NAME 由原来的一个 ...

  5. Android 安全开发之 ZIP 文件目录遍历

    1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在"../"的字符串,攻击者可以利用多个"../"在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原 ...

  6. Android安全开发之WebView中的地雷

    Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...

  7. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(七)-准备移植FatFs

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  8. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  9. 第36章 SDIO—SD卡读写测试

    第36章     SDIO—SD卡读写测试 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

随机推荐

  1. Calendar类测试

    public static void main(String[] args) throws ParseException { // 字符串转换日期格式 // DateFormat fmtDateTim ...

  2. pl/sql中having的用法

    HAVING的作用: 因为where关键字无法与聚集函数一起使用,HAVING可以和聚集函数一起使用 HAVING的语法: SELECT column_name, aggregate_function ...

  3. 7. javacript高级程序设计- 函数表达式

    1. 函数表达式 1.1 函数定义 函数定义的方式有两种:一种是函数声明,另一种就是函数表达式. (1). 函数声明:函数声明的重要特征就是函数声明提示,函数声明会在函数执行前执行 function ...

  4. SAP 工厂日生产计划待排维护

    *&---------------------------------------------------------------------* *& Report  ZPPR0024 ...

  5. a byte of python(摘02)

    a byte of python 第四章 运算符与表达式 运算符 运算符优先级 (运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算.例如, 2 + 3 + 4 被计算成 (2 + ...

  6. 头文件algorithm中的常用函数

    非修改性序列操作(12个) 循环         对序列中的每个元素执行某操作         for_each() 查找         在序列中找出某个值的第一次出现的位置         fin ...

  7. 关于内核调试(Windbg)的虚拟机配置问题

    注:本文配置 环境为VMware® Workstation11.1.2 build-2780323+Windows xp SP2+Windbg 6.12.0002.63 x86 *在win7以后的操作 ...

  8. PDO(数据访问抽象层)

    自带事务功能,多条sql同时执行时,如果其中一条执行失败,那么所有的都执行失败.开启了事务,可以进行回滚操作,让程序变得更安全. 1.访问不同的数据库2.自带事务功能3.防止SQL注入:分两次发送 / ...

  9. ASP.Net后台 实现先弹出对话框,再跳转到另一个网页的实现方法

    解决办法如下: Response.Write("<script>alert('想在对话框中显示的内容');window.navigate(‘要转到的页面的URL’)</sc ...

  10. SQL语句删除重复数据

    1.如表中没有主键,先添加自动增长主键 alter table 表名 add 列名 int identity (1,1) primary key 2.删除重复数据 delete from 表名 whe ...