Kotlin 文件系统操作完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Kotlin 中操作文件系统的入门指南



文件系统操作是使用 Kotlin 开发应用时的基本任务之一。无论是控制台应用、服务器项目还是 Android 移动应用,你几乎一定会需要读取、写入、移动或删除文件。作为运行在 JVM 之上的现代语言,Kotlin 不仅提供了标准 Java 库的所有功能,还增加了自身便捷的扩展方法和语法糖。



本文将全面讲解如何在 Kotlin 中高效操作文件系统。你将学习如何创建和删除文件与目录、读写数据、遍历目录以及处理异常。所有代码示例均使用纯 Kotlin 编写,不依赖任何第三方库。



主要类和方法



在 Kotlin 中,操作文件系统主要使用两类 API:



  • java.io.File —— 来自 Java 的经典 API,Kotlin 通过自身的扩展函数对其进行了增强。
  • java.nio.file.Path 和 java.nio.file.Files —— 来自 Java NIO 的更现代、功能更丰富的 API。


这两种方法在 Kotlin 中完全兼容,但对于新项目推荐使用第二种(NIO),因为它提供了更强大的功能和更好的性能。



创建文件和目录



我们先从最简单的操作开始——创建文件。在 Kotlin 中,这可以非常简洁地完成:



import java.io.File

fun main() { val file = File("example.txt") // 创建文件(如果文件创建成功则返回 true) val created = file.createNewFile() if (created) { println("文件已创建: ${file.absolutePath}") } else { println("文件已存在") } // 创建目录 val dir = File("myDirectory") val dirCreated = dir.mkdir() // 或使用 mkdirs() 创建嵌套目录 println("目录已创建: $dirCreated")}


请注意 mkdirs() 方法——与 mkdir() 不同,它会创建路径中所有缺失的父目录,而 mkdir() 只会创建路径中的最后一个目录。



读取文件



Kotlin 提供了优雅的扩展方法来读取文件内容。让我们来看几种方式:



import java.io.File

fun readExamples() { val file = File("data.txt") // 将整个文件读取为一个字符串 val content: String = file.readText() println("文件内容:$content") // 按行读取到列表 val lines: List<String> = file.readLines() lines.forEach { println("行: $it") } // 读取所有字节 val bytes: ByteArray = file.readBytes() println("文件大小: ${bytes.size} 字节") // 使用缓冲读取(适用于大文件) file.forEachLine { line -> println("处理行: $line") }}


对于大文件,最好使用 forEachLine 或 bufferedReader(),以避免将整个文件加载到内存中。



写入文件



向文件写入数据同样直观:



import java.io.File

fun writeExamples() { val file = File("output.txt") // 写入字符串(覆盖文件) file.writeText("你好,Kotlin!第二行") // 追加到文件末尾 file.appendText("第三行(追加内容)") // 写入字符串列表 val lines = listOf("第1行", "第2行", "第3行") file.writeText(lines.joinToString("")) // 写入字节 val data = byteArrayOf(72, 101, 108, 108, 111) // ASCII 码中的 "Hello" file.writeBytes(data)}


如果需要更多控制(例如指定编码),请使用

博客

书籍推荐