版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
获取SD卡根目录,很多人会想到如下方法:
Environment.getExternalStorageDirectory()
打印该目录,如下:
/storage/emulated/0
这在早期的的Android手机上是没什么问题的,因为旧的Android手机时代,sd卡还是个奢侈品,所以手机出厂的时候不带sd卡,用户需要自己买sd卡插入进入,这时代的Android手机只有一张sd卡,后来发展了,硬件发展的贼快,sd卡成本也在不断下降,手机出厂时直接就内置了一张sd卡在手机里面,而且是不可移除的,用户可以再买一张sd卡插入进去,这一张是属于可移除的,这样,手机上就有了两张sd卡,如果想要获取可移除的这张sd卡的根目录,要怎么获取呢?好像有点头痛,翻了好久Android文档,发现有一个方法,如下:
context.getExternalFilesDirs(type)
比如,我想获取一个保存音乐文件的目录,代码如下:
getExternalFilesDirs(Environment.DIRECTORY_MUSIC).forEach(System.out::println)
输出结果如下:
/storage/emulated/0/Android/data/cn.android666.helloeven/files/Music /storage/C695-0FC0/Android/data/cn.android666.helloeven/files/Music/storage/emulated/0 这是内置的sd卡,不可移除/storage/C695-0FC0 这是外置的sd卡,可移除
Android文档告诉我们getExternalFilesDirs(type)会返回一个数组,数组的第一个元素是内置sd卡,第二个元素是外置sd卡,这种方式能获取到外置sd卡,而且往里面写文件是没有问题的,但是这个目录中写入的文件,在应用卸载的时候会被系统删除,所以我们想写到sd卡的根目录中,这样就不会被系统删除,但是如何获取外置sd卡的根目录呢?网上找了好一些答案,写的有些麻烦,后来我才想到,既然getExternalFi