Kotlin - Kotlin IO另外提供的 File walker功能,帮你走访资料夹中的所有资料(深层)

那天自己想在资料夹中找到某一个档案根据档名的位置,于是就自己写了一个丑丑的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的档案

http://img2.58codes.com/2024/20125654H8UKrS8Ven.png

下次如果有同样需求的,也可以试试看


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章