Android sd卡读取

SD卡使用的是FAT(File Allocation Table)的文件系统,不支持访问模式和权限控制,SD卡适用于保存大尺寸的文件或者是一些无需设置访问权限的文件
Android模拟器支持SD卡,但模拟器中没有缺省的SD卡,开发人员须在模拟器中手工添加SD卡的映像文件
为了读\写SD卡上的文件,必须在AndroidManifest.xml中添加读\写SD卡的权限
在SD卡上创建与删除文件的权限
       Android.permission.MOUNT_UNMOUNT_FIFESYSTEMS
向SD卡写入数据的权限
        Android.permission.WRITE_EXTERNAL_STORAGE

编程访问SD卡方法一
首先需要检测系统的/mnt/sdcard目录是否可用
使用文件的输入输出流对SD卡里的文件进行读写
编程访问SD卡方法二
调用Environment的getExternalStorageState()方法判断手机上是否有SD卡,并且应用程序具有读写SD卡的权限
 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的根目录
使用文件的输入输出流对SD卡里的文件进行读写.

核心代码

写入文件到sd卡
//如果手机插入了SD卡,而且应用程序具有访问SD的权限
if (Environment.getExternalStorageState()
 .equals(Environment.MEDIA_MOUNTED))
{
 //获取SD卡的目录
 File sdCardDir = Environment.getExternalStorageDirectory();
 File targetFile = new File(sdCardDir.getCanonicalPath()+ FILE_NAME);
 //以指定文件创建 
        RandomAccessFile对象,第一个参数是文件名称,第二个参数是读写模式
 RandomAccessFile raf = new RandomAccessFile(targetFile , "rw");
 //将文件记录指针移动到最后
 raf.seek(targetFile.length());
 // 输出文件内容
 raf.write(content.getBytes());
 raf.close();
}

读取sd卡的文件
//如果手机插入了SD卡,而且应用程序具有访问SD的权限
if (Environment.getExternalStorageState()
 .equals(Environment.MEDIA_MOUNTED))
 {
 //获取SD卡对应的存储目录
 File sdCardDir = Environment.getExternalStorageDirectory();
 //获取指定文件对应的输入流
 FileInputStream fis = new FileInputStream(sdCardDir.getCanonicalPath() + FILE_NAME);
 //将指定输入流包装成BufferedReader
 BufferedReader br = new BufferedReader(new InputStreamReader(fis));
 StringBuilder sb = new StringBuilder("");
 String line = null;
//一直读,直到读到最后跳出
 while((line = br.readLine()) != null)
  { 
//一直追加读出的内容
      sb.append(line);
  }
//返回读出的内容,并把它转化为字符串
             return sb.toString();
  }

注意,还要加权限
<!-- 在SD卡中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向SD卡写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

下面列举一个实例,主要是按下写入按钮后把EditText的内容写入到sd卡里,然后按下读取按钮后就可以把sd卡里的文件读出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值