在特定檔案夾內創建一個新檔案
-
當采用
getExternalFilesDir(null),就會在路徑為
/storage/emulated/0/Android/data/你的具體包名/files會創建出如上的檔案夾出來 -
而采用
Environment.getExternalStoragePublicDirectory("").absolutePath會獲取到
/storage/emulated/0的路徑
如果你想要在 一個已存在的檔案夾里面創建一個新的檔案夾,再在新的檔案夾里創建目標檔案File,要記住,你不可以通過拼接出來的總路徑直接create一個目標檔案出來,這是很簡單的原因,因為系統無法根據你的Path幫你的目標File找到對應的目錄,如果目標File找不到父檔案夾,你又沒有創建這個檔案夾,那肯定是不行啦,也就無法進行下一步的創建檔案,,即是說你需要先創建好目標檔案的父檔案夾,再create檔案!
//反例??,會閃退或者報FileNotFoundException
val path = Environment.getExternalStoragePublicDirectory("").absolutePath
val file = File("${path}/Download/${url.substringAfterLast("/")}")
file.createNewFile()
//正確??
val path = MyApp.CONTEXT.getExternalFilesDir(null)?.absolutePath
val 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里的路徑名建立檔案夾(當你不知道此檔案夾是否存在,也不知道父檔案夾存在),就可用此方法,它建立檔案夾的原則是:
- 如果父檔案夾不存在并且最后一級子檔案夾不存在,它就自動新建所有路徑里寫的檔案夾;
- 如果父檔案夾存在,它就直接在已經存在的父檔案夾下新建子檔案夾,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/5565.html
標籤:Android
