美文网首页
android访问存储目录

android访问存储目录

作者: 真胖大海 | 来源:发表于2017-10-30 22:27 被阅读84次

    android访问存储目录的API主要分两类,
    一类是Environment类;
    一类是Context类。

    一.EnviranmentAPI访问的目录

    Enviranment访问的是直接与手机相关的目录


    image

    1. API

    Environment.getRootDirectory();//  /system
    Environment.getDataDirectory();// /data
    Environment.getDownloadCacheDirectory();// /cache
    Environment.getExternalStorageDirectory();// /storage/emulated/0
    Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC);// /storage/emulated/0/Music
    
    

    2. 注意点

    2.1 Environment.getExternalStorageDirectory()

    1. 获取到的目录是主要的外部存储目录,通常"文件浏览器"展示的根目录就是该目录。
    2. 访问该目录前使用getExternalStorageState()先获取其状态,状态等于Environment.MEDIA_MOUNTED才是可以访问。

    2.2 Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC);

    获取外部存储目录下存放某一类型文件的目录,该目录可能为空,所以要判断为是否为空,如果为空则创建。

    二.ContextAPI访问的目录

    Context访问的目录是直接与应用相关的目录

    1. 应用的外部存储目录

    image
    context.getExternalFilesDir(DIRECTORY_MOVIES)// /storage/emulated/0/Android/data/包名/files/Movies
    context.getExternalCacheDir();// /storage/emulated/0/Android/data/包名/cache
    

    1.1 注意

    context.getExternalFilesDir(DIRECTORY_MOVIES)与Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC)类似,先要判断其文件是否存在

    2.应用的内部存储目录

    image
    context.getFilesDir()// /data/user/0/包名/files
    context.getCacheDir()// /data/user/0/包名/cache
    

    三.注意

    1. 不同的手机器获取的具体路径可能不一样有的,
      比如Environment.getExternalStorageDirectory()可能是/storage/emulated/0,也可能是/storage/sdcard。(本文中的具体路径来自于华为meta9)
    2. 获取外部存储目录都要使用getExternalStorageState()判断其状态是否可用。
    3. 读写文件需要申请读写权限。如果targetSDK>=23,则必须动态申请权限,如果在AndroidManifest中申请读写权限是没有用的。简单点的方法就是将argetSDK降至23以下。

    参考文章

    相关文章

      网友评论

          本文标题:android访问存储目录

          本文链接:https://www.haomeiwen.com/subject/qntvpxtx.html