高级UI工作生活面试题

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

2019-07-02  本文已影响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
    ------------------------------------------------------------------------------- 
    
    以上为常用目录打印结果
上一篇 下一篇

猜你喜欢

热点阅读