Kotlin 文件与文件系统操作:从新手到专家

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

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

开始课程

为什么在 Kotlin 中处理文件并不痛苦



想象一下:您正在编写一个应用程序,需要保存用户设置、记录错误或处理包含数千行数据的 CSV 文件。在 Java 中,这需要用到几十个类,如 BufferedReader、FileWriter 以及无尽的 try-catch。那 Kotlin 呢?这个由 JetBrains 创建的语言不仅仅是“简化”了 Java——它重新定义了对数据的处理方式。在这里,打开文件只需一行代码,错误处理也优雅得多。



在本文中,我们将从基本操作到高级技术,全面解析 Kotlin 中的文件与文件系统操作。您将学习如何读写文件、管理目录、处理 JSON 和 CSV,以及避免常见错误。准备好了吗?让我们开始吧!



基础:Kotlin 如何简化 Java IO



Kotlin 的一大亮点是扩展函数。您无需编写几十行代码来读取文件,只需使用一个函数 .readText() 或 .readLines()。让我们来看一些具体示例。



读取整个文件

读取文本文件最简单的方法是使用 readText()。此方法返回包含文件内容的字符串。重要提示:读取后文件会自动关闭。



import java.io.File

fun main() { val content = File("example.txt").readText() println(content)}


如果文件很大,最好逐行读取:



val lines = File("example.txt").readLines()lines.forEach { line -> println(line) }


如果需要以流的方式读取(例如,处理大型日志):



File("example.txt").useLines { lines ->    lines.forEach { line ->        // 处理每一行        println(line)    }}


请注意 useLines()——这个函数能确保在代码块执行完毕后自动关闭资源。这看起来像魔法,但实际上它类似于 Java 中的 try-with-resources,只是写法更简洁。



写入文件

在 Kotlin 中写入数据也非常直观。以下是三种方式:



// 1. 覆盖文件File("output.txt").writeText("你好,世界!")

// 2. 追加到文件末尾File("output.txt").appendText("新的一行")

// 3. 写入字符串列表val list = listOf("行1", "行2", "行3")File("output.txt").writeText(list.joinToString(""))


顺便提一下,如果您处理的是二进制数据(如图片、压缩包),请使用 writeBytes() 和 readBytes():



val imageBytes = File("image.png").readBytes()// 处理字节...File("copy.png").writeBytes(imageBytes)


文件系统管理:创建、删除、移动



Kotlin 并没有重新发明轮子,但它让文件系统操作变得更加便捷。所有操作都可以通过带有扩展的 java.io.File 类来完成。



创建目录

要创建一个目录(如果父目录不存在,则一并创建):



val dir = File("data/logs/2024")val created = dir.mkdirs() // 如果创建成功则返回 trueprintln("目录已创建:$created")


请注意:mkdir() 只创建最后一级文件夹,而 mkdirs() 会创建整个路径。



检查存在性及删除



val file = File("temp.txt")if (file.exists()) {    if (file.delete()) {        println("文件已删除")    } else {        println("删除失败")    }}

// 递归删除目录File("data").deleteRecursively()


请谨慎使用 deleteRecursively()——这是一个不可逆的操作。请再三确认您删除的是正确数据。



移动和复制



val source = File("old.txt")val target = File("new_dir/new.txt")

// 移动(重

博客

书籍推荐