Android(安卓)创建文件路径这件事,你也可能会犯的错误
16lz
2021-01-26
在特定文件夹内创建一个新文件
-
当采用
getExternalFilesDir(null)
,就会在路径为
/storage/emulated/0/Android/data/你的具体包名/files
会创建出如上的文件夹出来 -
而采用
Environment.getExternalStoragePublicDirectory("").absolutePath
会获取到
/storage/emulated/0
的路径
如果你想要在 一个已存在的文件夹里面创建一个新的文件夹,再在新的文件夹里创建目标文件File。要记住,你不可以通过拼接出来的总路径直接create一个目标文件出来。这是很简单的原因,因为系统无法根据你的Path帮你的目标File找到对应的目录,如果目标File找不到父文件夹,你又没有创建这个文件夹,那肯定是不行啦,也就无法进行下一步的创建文件。。即是说你需要先创建好目标文件的父文件夹,再create文件!
//反例,会闪退或者报FileNotFoundExceptionval path = Environment.getExternalStoragePublicDirectory("").absolutePathval file = File("${path}/Download/${url.substringAfterLast("/")}")file.createNewFile()//正确val path = MyApp.CONTEXT.getExternalFilesDir(null)?.absolutePathval file1 = File("${path}/Download")file1.mkdirs()val file = File("${path}/${url.substringAfterLast("/")}")file.createNewFile()
补充:创建文件夹函数 mkdir() 与 mkdirs()
mkdir() 必须父文件夹存在
如果你想在已经存在的文件夹(/storage/emulated/0/Android/data/)下建立新的文件夹(XXXXXX文件夹),就可以用此方法。此方法不能在不存在的文件夹下建立新的文件夹。假如想建立名字是"XXXXXX"文件夹,那么它的父文件夹必须存在。
mkdirs() 会判断新建指定路径中缺少的文件夹
如果你想根据File里的路径名建立文件夹(当你不知道此文件夹是否存在,也不知道父文件夹存在),就可用此方法,它建立文件夹的原则是:
- 如果父文件夹不存在并且最后一级子文件夹不存在,它就自动新建所有路径里写的文件夹;
- 如果父文件夹存在,它就直接在已经存在的父文件夹下新建子文件夹。
更多相关文章
- 谷歌CTS测试之GTS测试简介
- Android(安卓)Studio如何导入第三方库进行JNI编程
- MTK Android(安卓)P 开机无动画,无铃声问题和开机铃声不同步,首次
- Android(安卓)如何添加一种锁屏方式
- Android--SQLite数据库应用技巧分享
- Android(安卓)Material Design-Creating Apps with Material Des
- android关于微信分享和登录的一些注意点
- Error running app: Default Activity Not Found
- Android(安卓)studio 无法创建Android项目