zoukankan      html  css  js  c++  java
  • android 各个存储路径及获取方法总结

    最长用到的就这三个位置

    • /data/data/包名/
    • /sdcard/Android/data/包名/
    • /sdcard/xxx
      前两个是应用内部存储, 会随着app的卸载而自动删除, sdcard中其他的文件夹不会自动删除, 除非用户手动删除, 否则会一直存在, 换句话说就是垃圾.
      Google官方建议把数据存储在 /sdcard/Android/data/包名/ 下.

    路径获取方法
    前两个应用内部存储通过 Context 来获取, 第三个作为外部存储是通过 Environment 类来获取. 注释为返回值.

    /data/data/包名/

    context.getFilesDir(); // /data/data/包名/files
    context.getCacheDir(); // /data/data/包名/cache

    /sdcard/Android/data/包名/

    context.getExternalFilesDir(); // /sdcard/Android/data/包名/files
    context.getExternalCacheDir(); // /sdcard/Android/data/包名/cache

    /sdcard/xxx

    // /storage/emulated/0
    Environment.getExternalStorageDirectory();

    // /storage/emulated/0/DCIM, 另外还有MOVIE/MUSIC等很多种标准路径
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

    注意, 根据源码文档中说明, 获取外部存储时, 有可能会因为各种问题导致获取失败, 建议先使用 getExternalStorageState 来判断外部存储状态, 如果已挂载的话再存储.

    在开发过程中,我们会经常需要操作手机的sd卡,在使用前,我们应该先判断sd卡的状态再使用

    通过Environment.getExternalStorageState()方法我们可以获得sd卡的状态信息

    返回的是一个string类型的状态量。

    状态的参数用法如下

    sd卡状态  现象描述 /mnt/sdcard目录存在否 canWrite()返回 canRead()返回 在/mnt/sdcard创建文件 在/mnt/sdcard创建文件夹
    MEDIA_MOUNTED SD卡正常挂载 true true
    MEDIA_REMOVED sd卡不存在 false false 不可 不可
    MEDIA_UNMOUNTED sd卡存在,系统未挂载 false false 不可 不可
    MEDIA_BAD_REMOVAL sd卡在被挂载前,被暴力直接移除

    false false 不可 不可
    MEDIA_SHARED 存在sd卡,但未被挂载处于被通过usb共享内存状态中 false false 不可 不可
    MEDIA_CHECKING sd卡处于被检查状态 false false 不可 不可
    MEDIA_MOUNTED_READ_ONLY sd卡为只读状态 false true 不可 不可
    MEDIA_NOFS 1、sd卡存在为空白状态2、系统不支持 false false 不可 不可
    MEDIA_UNMOUNTABLE sd卡不能挂载 false false 不可 不可

    所需权限

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  • 相关阅读:
    LeetCode偶尔一题 —— 617. 合并二叉树
    《剑指offer》 —— 链表中倒数第k个节点
    《剑指offer》 —— 青蛙跳台阶问题
    《剑指offer》—— 二维数组中的查找
    《剑指offer》—— 替换空格
    《剑指offer》—— 合并两个排序的链表
    《剑指offer》—— 礼物的最大价值
    生成Nuget 源代码包来重用你的Asp.net MVC代码
    Pro ASP.Net Core MVC 6th 第四章
    Pro ASP.NET Core MVC 6th 第三章
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/11937531.html
Copyright © 2011-2022 走看看