Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中。

在Android系统中如何获得存储的路径呢?

 public static void getRootPath(Context context) {  Log.d("ExternalDirectory->", Environment.getExternalStorageDirectory().getPath());  Log.d("ExternalCacheDir->", context.getExternalCacheDir().getPath());  Log.d("CacheDir->", context.getCacheDir().getPath());  Log.d("FilesDir->", context.getFilesDir().getPath()); }

以上对应的输出结果为

ExternalDirectory->: /storage/emulated/0 ExternalCacheDir->: /storage/emulated/0/Android/data/zhuwentao.com.pathdemo/cache CacheDir->: /data/data/zhuwentao.com.pathdemo/cache FilesDir->: /data/data/zhuwentao.com.pathdemo/files

应用的缓存建议存储在通过getExternalCacheDir().getPath()获取的路径中,这里的zhuwentao.com.pathdemo会根据你的应用程序包名不同会有差别,存在这个路径,主要有以下几个好处

一:该路径是在SD卡中,所以不用担心手机内置存储空间不足,只要SD卡够大就行。

二:该路径是Android系统默认的应用缓存路径,对应手机应用设置里面应用详情的“清除缓存”和“清除数据”按钮。

三:当我们卸载应用时,该路径下的数据也会被清空,这样就避免了有些应用卸载后还有残留数据的问题。

如果需要保存用户下载的数据,就不建议存储在getExternalCacheDir()中了,可以在Environment.getExternalStorageDirectory()下新建一个文件夹,用来存储用户下载的数据。

我们在选择存储路径的时候,还要考虑到用户的手机是否有SD卡,再进行选择,通过以下代码判断用户是否有SD卡:

 /**  * 获取手机可存储路径  * @param context 上下文  * @return 手机可存储路径  */ public static String getRootPath(Context context) {  // 是否有SD卡  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)    || !Environment.isExternalStorageRemovable()) {   return context.getExternalCacheDir().getPath(); // 有  } else {   return context.getCacheDir().getPath(); // 无  } }

如果有SD卡或者SD卡不可被移除的时候则获取SD卡下的路径,没有则获取应用程序缓存路径。

有时候getExternalStorageDirectory()怎么也获取不到外置SD卡,这是为何呢?

在Android4.0之前Environment.getExternalStorageDirectory()获取到的是外置SD卡路径,而在4.0之后由于很多手机的自带内存已经很大了,不需要外置SD卡,所以Android就把内置的内存分一部分出来当作SD卡使用了,导致不同版本的Android系统获取到的SD卡路径会存在差异。

需要注意的是,各个手机厂商的SD卡路径也是会存在差异的,有些手机获取到的路径是“/mnt/sdcard/…”,而有的获取的是“/storage/sdcard0/…”所以绝对不能写死SD卡的路径。

以上这篇Android 存储路径选择方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多相关文章

  1. SpringBoot webSocket 发送广播、点对点消息,Android接收
  2. Android(安卓)-- 超全的 File,Bitmap,Drawable,Uri, FilePath ,byte
  3. android红米等关于读取本地文件夹图片获取路径的问题的解决
  4. android中打开本地doc、pdf、ppt、text等文件功能的实现
  5. Android(安卓)adb方式获取手机总内存和可用内存信息
  6. Android(安卓)M动态申请获取权限android.permission.READ_PHONE_
  7. Android获取设备已安装的应用
  8. Android-常用代码-36片段
  9. Android获取CPU信息(CPU名字和主频)

随机推荐

  1. Andorid利用sserver/runtime实现java执行
  2. 高德地图Android版SDK的应用(定位,添加自
  3. 42.Android LocationManager
  4. Android TextView 个别文字字体颜色格式
  5. Android之使用MediaMetadataRetriever类
  6. Android SDK Manager Extras中没有 Intel
  7. Android SQLite 数据库、表的增、删、改
  8. 关于Android 游戏开发中 OnTouchEvent()
  9. android log笔记
  10. Android 解决SwipeRefreshLayout和viewpa