存到公共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操作系统的