10-文件遍历
13.2.3 文件遍历
和Groovy等编程语言一样,Kotlin对遍历文件功能进行了扩展,遍历文件树可以调用扩展方法walk,它会返回一个fileTreeWalk对象。下面是遍历指定文件夹下所有文件的示例。
fun traverseFileTree(filename: String) {
val f = File(filename)
val fileTreeWalk = f.walk()
fileTreeWalk.iterator().forEach { println(it.absolutePath) }
}
当然,还可以遍历当前文件下面的所有子目录文件,并将返回结果存入一个 Iterator
fun getFileIterator(filename: String): Iterator<File> {
val f = File(filename)
val fileTreeWalk = f.walk()
return fileTreeWalk.iterator()
}
除此之外,Kotlin的文件遍历操作还支持条件过滤,并将返回结果存入一个Sequence
fun getFileSequenceBy(filename: String, p: (File) -> Boolean): Sequence<File> {
val f = File(filename)
return f.walk().filter(p)
}
遍历文件树需要调用扩展方法walk,并最终返回一个fileTreeWalk对象,该函数还提供了用于设置遍历方向和深度的相关方法。