美文网首页高级UI工作生活面试题
Android获取文件夹api及对应存储地址整理

Android获取文件夹api及对应存储地址整理

作者: 樱花_洛 | 来源:发表于2019-07-02 15:07 被阅读11次

本文整理了一些安卓中常用的获取文件夹的api, 并得到它们的实际存储地址, 方便开发者了解在做文件存储时,文件会具体存放的位置所在。

代码运行环境为华为P9 Android 8.0, 项目版本配置如下:

compileSdkVersion 28
minSdkVersion 22
targetSdkVersion 28

不同版本手机,打印出来的地址可能会有出入, 建议可以复制如下代码进行实际测试:

kotlin版本

 private fun printFileDir() {
        var paths: StringBuilder = java.lang.StringBuilder()
        paths.append("\n------------------------------------------------------------------------------- \n")
        paths.append("\n获取目录api对应的存储地址如下: \n")
        paths.append("\nEnvironment.getDataDirectory() :\t" + Environment.getDataDirectory())
        paths.append("\nEnvironment.getDownloadCacheDirectory() :\t" + Environment.getDownloadCacheDirectory())
        paths.append("\nEnvironment.getExternalStorageDirectory() :\t" + Environment.getExternalStorageDirectory())
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_ALARMS
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DCIM
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOCUMENTS
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_MOVIES
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_MUSIC
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_NOTIFICATIONS
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PODCASTS
            )
        )
        paths.append(
            "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES) :\t" + Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_RINGTONES
            )
        )
        paths.append("\nEnvironment.getExternalStorageState() :\t" + Environment.getExternalStorageState())
        paths.append("\nEnvironment.getRootDirectory() :\t" + Environment.getRootDirectory())
        paths.append("\nContextCompat.getExternalCacheDirs(context!!) :\t" + ContextCompat.getExternalCacheDirs(context!!).get(0).path)
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_ALARMS) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_ALARMS
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DCIM) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_DCIM
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DOCUMENTS) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_DOCUMENTS
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DOWNLOADS) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_DOWNLOADS
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_MOVIES) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_MOVIES
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_MUSIC) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_MUSIC
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_NOTIFICATIONS) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_NOTIFICATIONS
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_PICTURES) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_PICTURES
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_PODCASTS) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_PODCASTS
            ).get(0).path
        )
        paths.append(
            "\nContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_RINGTONES) :\t" + ContextCompat.getExternalFilesDirs(
                context!!,
                Environment.DIRECTORY_RINGTONES
            ).get(0).path
        )

        paths.append("\n------------------------------------------------------------------------------- \n")
        paths.append("\n以上为常用目录打印结果\n")
        Log.d("file_operator", paths.toString())
    }

注意,ContextCompat.getExternalFilesDirs()是为Android 4.3及以下版本为获取外置存储目录的兼容方法,返回的是一个文件数组列表。如果你的应用兼容到4.3及以下,在选择外置存储时,请默认选择第一个文件路径,只有当它控件满了或者不可用时,在选择其它可用的外置存储。

Java版本

private void printFileDir(Context context) {
        StringBuilder paths  = new StringBuilder();
        paths.append("\n------------------------------------------------------------------------------- \n");
        paths.append("\n获取目录api对应的存储地址如下: \n");
        paths.append("\nEnvironment.getDataDirectory() :\t" + Environment.getDataDirectory());
        paths.append("\nEnvironment.getDownloadCacheDirectory() :\t" + Environment.getDownloadCacheDirectory());
        paths.append("\nEnvironment.getExternalStorageDirectory() :\t" + Environment.getExternalStorageDirectory());
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_ALARMS
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_DCIM
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_DOCUMENTS
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_DOWNLOADS
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_MOVIES
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_MUSIC
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_NOTIFICATIONS
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_PICTURES
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_PODCASTS
                )
        );
        paths.append(
                "\nEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES) :\t" + Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_RINGTONES
                )
        );
        paths.append("\nEnvironment.getExternalStorageState() :\t" + Environment.getExternalStorageState());
        paths.append("\nEnvironment.getRootDirectory() :\t" + Environment.getRootDirectory());
        paths.append("\nContextCompat.getExternalCacheDirs(context) :\t" + ContextCompat.getExternalCacheDirs(context));
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_ALARMS)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_ALARMS
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_DCIM)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_DCIM
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_DOCUMENTS)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_DOCUMENTS
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_DOWNLOADS)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_DOWNLOADS
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_MOVIES)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_MOVIES
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_MUSIC)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_MUSIC
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_NOTIFICATIONS)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_NOTIFICATIONS
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_PICTURES)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_PICTURES
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_PODCASTS)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                        context,
                Environment.DIRECTORY_PODCASTS
            )[0].getPath()
        );
        paths.append(
                "\nContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_RINGTONES)[0].getPath() :\t" + ContextCompat.getExternalFilesDirs(
                       context,
                Environment.DIRECTORY_RINGTONES
            )[0].getPath()
        );

        paths.append("\n------------------------------------------------------------------------------- \n");
        paths.append("\n以上为常用目录打印结果\n");
        Log.d("file_operator", paths.toString());
    }

打印的结果如下:

    ------------------------------------------------------------------------------- 
    
    获取目录api对应的存储地址如下: 
    
    Environment.getDataDirectory() :    /data
    Environment.getDownloadCacheDirectory() :   /data/cache
    Environment.getExternalStorageDirectory() : /storage/emulated/0
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS) :   /storage/emulated/0/Alarms
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) : /storage/emulated/0/DCIM
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) :    /storage/emulated/0/Documents
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) :    /storage/emulated/0/Download
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) :   /storage/emulated/0/Movies
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) :    /storage/emulated/0/Music
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS) :    /storage/emulated/0/Notifications
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) : /storage/emulated/0/Pictures
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS) : /storage/emulated/0/Podcasts
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES) :    /storage/emulated/0/Ringtones
    Environment.getExternalStorageState() : mounted
    Environment.getRootDirectory() :    /system
    ContextCompat.getExternalCacheDirs(context!!) : /storage/emulated/0/Android/data/com.finance.theinvestorroad/cache
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_ALARMS) :   /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Alarms
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DCIM) : /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/DCIM
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DOCUMENTS) :    /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Documents
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_DOWNLOADS) :    /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Download
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_MOVIES) :   /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Movies
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_MUSIC) :    /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Music
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_NOTIFICATIONS) :    /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Notifications
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_PICTURES) : /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Pictures
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_PODCASTS) : /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Podcasts
    ContextCompat.getExternalFilesDirs(context!!, Environment.DIRECTORY_RINGTONES) :    /storage/emulated/0/Android/data/com.finance.theinvestorroad/files/Ringtones
    ------------------------------------------------------------------------------- 
    
    以上为常用目录打印结果

相关文章

  • Android获取文件夹api及对应存储地址整理

    本文整理了一些安卓中常用的获取文件夹的api, 并得到它们的实际存储地址, 方便开发者了解在做文件存储时,文件会具...

  • Android学习整理 -12-Android的存储访问及目录A

    Android学习整理 - 系列 本篇只针对API19及以上 访问外部存储的权限 API19开始,应用可以管路在它...

  • Android 文件存储

    Android 存储位置及 API 一、内部存储 应用安装后都会在Android 根目录生成 /data/data...

  • Bitmap

    以下内容整理自互联网,仅用于个人学习 1. Bitmap的存储位置 在Android2.3.3(API 10)及之...

  • Android 沉浸式状态栏 +DrawerLayout+To

    概述 Android 状态栏沉浸式基于4.4及以上, Android 系统名字、版本、API level的对应关系...

  • 关于Android文件的那些事

    前言 在了解Android文件相关知识前,先来了解下Android文件相关常用的API 输出如下: 1、获取文件夹...

  • 安卓获取文件夹路径

    目的:获取sd卡根目录下的文件夹 推荐一篇关于安卓路径的文章彻底搞懂Android文件存储---内部存储,外部存储...

  • calabash-android(Debugging TestS

    一、获取代码(在同一个文件夹下克隆calabash-android及calabash-android-server...

  • Android开发

    Android开发 一、概述 1、Android系统版本号对应API:【要清楚常用的系统版本号对应的API等级。】...

  • 网站工具集接口

    获取网站地址接口 地址:http://60.191.74.66:8000/Polaris/api/api.php?...

网友评论

    本文标题:Android获取文件夹api及对应存储地址整理

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