- File 类扩展函数
- 案例:读取目录文件
在 Kotlin 中如果只是对文件进行操作,可以不直接使用文件流。Kotlin 在 Java 文件类 File 的基础上增加了很多扩展函数和属性,对字符串的操作变得非常简单。
一、File 类扩展函数
File 类可以表示一个文件也可以表示一个目录。kotlin 提供的 File 扩展函数和属性有很多,这里介绍几个常用的函数。
(1). 读取文件全部内容,返回字节数组:
fun File.readBytes(): ByteArray
(2). 读取文件全部内容,返回字符串,所以只能是文本文件,默认字符是 UTF-8:
fun File.readText(
charset: Charset = Charsets.UTF_8
): String
(3). 写入字节数组到文件中:
fun File.writeBytes(array: ByteArray): Unit
(4). 写入字符串到文件,只能是文本文件,默认字符是 UTF-8:
fun File.writeText(
text: String,
charset: Charset = Charsets.UTF_8
): Unit
(5). 遍历文件中每一行数据,对每一行数据进行处理,只能是文本文件:
fun File.forEachLine(
charset: Charset = Charsets.UTF_8,
action: (line: String) -> Unit
): Unit
(6). 读取文件中的数据到一个 List 集合,每一个行数据是一个元素,只能是文本文件:
fun File.readLines(
charset: Charset = Charsets.UTF_8
): List<String>
(7). 复制到目标文件,target 参数是目标文件,overwrite 参数选择是否覆盖目标文件:
fun File.copyTo(
target: File,
overwrite: Boolean = false,
bufferSize: Int = DEFAULT_BUFFER_SIZE
): File
(8). 遍历文件目录和内容,direction 是遍历的方向:
fun File.walk(
direction: FileWalkDirection = FileWalkDirection.TOP_DOWN
): FileTreeWalk
(9). 按自下而上的顺序遍历文件目录和内容:
fun File.walkBottomUp(): FileTreeWalk
(10). 按自上而下的顺序遍历文件目录和内容:
fun File.walkTopDown(): FileTreeWalk
二、案例:读取目录文件
该案例从 TestDir 目录中列出所有 html 文件。
fun main(args: Array<String>?) {
File("./TestDir/").walk()
.filter { it.isFile }
.filter { it.extension == "html" }
.forEach { println(it) }
}