那天自己想在資料夾中找到某一個檔案根據檔名的位置,於是就自己寫了一個醜醜的listFiles()
// 但我這邊是找某一個資料夾,在該層找檔案,並不是整個網所有資料夾深入
val foundFile = fileFolder.takeIf { it.exists() }?.let {
it.listFiles()?.firstOrNull { file ->
file.name.equals("MAP")
}?.let { mapFile ->
mapFile.listFiles()?.firstOrNull { mapFiles ->
mapFiles.name.equals("Img.data")
}
}
}
後來用了Copilot 想說讓他簡化一下,沒想到他給我了這個答案
fileFolder.let {
it.walk().forEach { file ->
if (file.name == findFileName) {
return file
}
}
}
我才發現,原來kotlin io中有提供一個 file的extension,而且很簡單的,就叫做 walk
,可以直接幫你走訪所有的資料夾中的檔案,直到你處理找到你要的檔案就可以return
package kotlin.io
/**
* Gets a sequence for visiting this directory and all its content.
*
* @param direction walk direction, top-down (by default) or bottom-up.
*/
public fun File.walk(direction: FileWalkDirection = FileWalkDirection.TOP_DOWN): FileTreeWalk =
FileTreeWalk(this, direction)
而且他還有其他功能,原來有一個FileTreeWalk的檔案
下次如果有同樣需求的,也可以試試看