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

本文整理了一些安卓中常用的获取文件夹的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

-------------------------------------------------------------------------------

以上为常用目录打印结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值