5.Android数据保存策略之2--SD卡

存到公共sd卡中去(访问级别–公有)


SD卡分两种: 1.可以让用户自己去插拔
       2.内置在手机中的SD卡

1 将数据保存到sd卡中去:


在android的文件系统中,存在sdcard的一个软链接(相当于windows中的快捷方式)
/sdcard—->>>软连接—–/mnt/sdcard

(该软链接存在的前提是你的手机里有一个sdcard)

2 怎么获取这个位置呢?


安卓手机特别多,不同的oem厂商定义sdcard时有不同的路径名称
比如:
/mnt/sdcard/emulated01
/mnt/sdcard/storage01
/mnt/sdcard/storage02等
这对开发者来说是个很蛋疼的问题

好在Google Android中提供了一种兼容性非常好的路径获取方式:

Environment.getExternalStorageDirectory()


如图,示例中在sdcard中新建了一个文件,存放路径是:/info.txt
这里写图片描述

但是这样还不够,在Android中,对文件存取是需要权限的,所以我们需要在AndroidManifest.xml文件中向系统申请一下写外部sdcard的权限:

这里写图片描述

在保存数据到SD卡之前,需要确认两件事情:


1.SD卡只有在挂载的情况下才能写入数据,所以这里需要做一个挂载检测

  • 判断sdcard的 状态

    String status = Environment.getExternalStorageState();

  • 如果是mouted — 挂载 , 那么这个时候 可以去 写 数据到 sd 卡中

    Environment.MEDIA_MOUNTED.equals(status)


2.写入的数据不能超过SD卡的空闲空间大小,需要检查一下空闲容量

  • 返回可用的 空闲的 空间 大小 —- in bytes

    long freeSpace = Environment.getExternalStorageDirectory().getFreeSpace();

  • 拿到 sd 卡的总的大小, in bytes

    Environment.getExternalStorageDirectory().getTotalSpace();

  • 拿到 sd 卡 已经使用的 的大小, in bytes

    Environment.getExternalStorageDirectory().getUsableSpace();

  • 调用这个api 去获得sd 卡的 可用 控件, 这里还做了一个事, 将 返回的字节 空间 做了单位的转换

    String avalableSize = Formatter.formatFileSize(this, freeSpace);

3.查看文件的访问权限:


在android中, 每个应用都有自己私有的隐秘的信息, 在编程的时候,咱们程序员可以去设置创建的访问的权限

Linux下的文件权限:
这里写图片描述


在android文件夹的权限是源于linux操作系统的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值