美文网首页高级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及对应存储地址整理

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