在特定文件夹内创建一个新文件

  • 当采用 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里的路径名建立文件夹(当你不知道此文件夹是否存在,也不知道父文件夹存在),就可用此方法,它建立文件夹的原则是:

  • 如果父文件夹不存在并且最后一级子文件夹不存在,它就自动新建所有路径里写的文件夹;
  • 如果父文件夹存在,它就直接在已经存在的父文件夹下新建子文件夹。

更多相关文章

  1. 谷歌CTS测试之GTS测试简介
  2. Android(安卓)Studio如何导入第三方库进行JNI编程
  3. MTK Android(安卓)P 开机无动画,无铃声问题和开机铃声不同步,首次
  4. Android(安卓)如何添加一种锁屏方式
  5. Android--SQLite数据库应用技巧分享
  6. Android(安卓)Material Design-Creating Apps with Material Des
  7. android关于微信分享和登录的一些注意点
  8. Error running app: Default Activity Not Found
  9. Android(安卓)studio 无法创建Android项目

随机推荐

  1. Android package属性、package name和App
  2. android 输入对话框 确认对话框
  3. adb通过wifi连接android设备的方法
  4. android字体大小多屏幕适配
  5. android 虚拟按键源码流程分析
  6. android SimpleOnGestureListener详解
  7. Android(安卓)自定义对话框
  8. Android 模拟器 HAXM硬件加速安装
  9. 关于服务端设置了IPV6时,Android请求网络
  10. android 自定义权限问题