Android存储卡

注意:本文是在他人的博客上的文章的译载,自己并未深入探索,会持续不断更新

      首先,操作SD卡系列首先就是要获取各类目录,并且在目录可操作状态上进行操作,而这用到最重要的一个类就是Evironment. Android的一些目录也存在于SD卡及对应的数据文件中,但要获得通常是通过Context来获得

同样,还得明白一个事实:通常手机(至少国内)可能有自带存储卡及外部存储卡这一说法,这就说明可能需要判断是哪个卡

SD卡常用目录:根目录为:/mnt/ 下面不再列出

  1. sdcard2
  2. sdcard-ext
  3. ext_sdcard
  4. sdcard/SD_CARD
  5. sdcard/extra_sd
  6. extrasd_bind
  7. sdcard/ext_sd
  8. sdcard/external_SD

还有应该跟外部存储器相关的目录/storage/sdcard1   及/storage/extSdCard


我们到底能做些什么?

获取各类目录:

  1. Evironment.getDataDirectory() = /data
  2. Evironment.getDownloadCacheDirectory() = /cache
  3. Evironment.getExternalStorageDirectory() = /mnt/sdcard
  4. Evironment.getRootDirectory() = /system
  5. context.getCacheDir() = /data/data/com.mt.mtpp/cache
  6. context.getExternalCacheDir() = /mnt/sdcard/Adnroid/data/com.mt.mtpp/cache
  7. context.getFilesDir() = /data/data/com.mt.mtpp/files
当然获取目录也可以通过getVolumePahts及反射机制来实现

获取外部存储器及判断是否是外部存储器:
  1. Environment.isExternalStorageRemovable()

目录已经获取,并不代表能用,听起来有点像权限的味道,实际上指的目录的状态
SD卡的状态常量:
  1. MEDIA_BAD_REMOVAL :表明SD卡卸载前已经移除,个人类比为U盘插入后直接拔了,但电脑还需要移除
  2. MEDIA_CHECKING :表明SD卡正在磁盘检查
  3. MEDIA_MOUNTED:表明SD卡存在并具有读、写、创建文件文件夹的权限,所以通常在这个状态下操作
  4. MEDIA_MOUNTED_READ_ONLY:显然只读权限
  5. MEDIA_NOFS:表明SD为空白或者正在使用不受支持的文件系统
  6. MEDIA_REMOVED : 不存在SD卡
  7. MEDIA_SHARED : SD卡未安装,并通过USB大容量存储共享
  8. MEDIA_UNMOUNTED :SD卡存在,但不能够挂载
  9. MEDIA_UNMOUNTABLE : SD卡不可被安装 
获取状态的方法:
Envirnoment.getExternalStorageState()


常用代码实现:
做一缓存目录,相当于就是获得某一文件夹然后加上自己的文件名
  Step1: 看看SD卡状态是不是MEDIA_MOUNTED
  Step2: 最好不要缓存到外部存储
  Step3: 要么获取SD卡缓存目录,要么获取Context下的缓存目录
  Step4: 根据上面目录建一个自己的缓存目录
@param context 上下文背景
@param uniqueName 自己的缓存文件夹名
@return 缓存目录
@warn 在实际应用中,应该尽量嵌入Android的版本支持
String cachePath = Environment.getExternalStorageState == Environment.MEDIA_MOUNTED || 
					!Environment.isExternalStorageRemovable() ?
					context.getExternalCacheDir().getPath(): context.getCacheDir().getPath();
					
		return new File(cachePath + File.separator + uniqueName);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值