在 Kotlin 中处理文件系统:初学者完整指南

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

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

开始课程

Kotlin 文件系统操作简介



文件系统操作是每位开发者都会遇到的基本任务之一。无论您是在编写控制台应用程序、Web 服务还是 Android 移动应用程序,掌握读取、写入和管理文件的能力都是一项必备技能。在本文中,我们将详细讲解如何使用 Kotlin 处理文件系统,既使用标准的 Java 工具,也利用该语言的现代特性。



Kotlin 是一种现代、简洁且安全的编程语言,与 Java 完全兼容。这意味着您可以使用 java.io 和 java.nio.file 的所有功能,同时编写更简短、更具表现力的代码。本文面向已经熟悉 Kotlin 基本语法的初学者开发者。



用于文件操作的主要类和方法



在进入实践之前,让我们先了解在 Kotlin 中处理文件系统所需的关键类:



  • java.io.File — 用于表示文件和目录的主要类。
  • java.nio.file.Path — 用于处理路径的现代接口。
  • java.nio.file.Files — 包含许多静态方法的工具类。
  • java.io.BufferedReader 和 java.io.BufferedWriter — 用于逐行读取和写入。


Kotlin 还为 File 类提供了自己方便的扩展,使代码更加简单。例如,readText()、writeText()、appendText() 等函数。



创建文件和目录



我们从最简单的开始——创建文件。在 Kotlin 中,只需一行代码即可完成:



import java.io.File

fun main() { val file = File("example.txt") file.createNewFile() // 如果文件不存在则创建 println("文件已创建: ${file.absolutePath}")}


请注意:createNewFile() 返回一个 Boolean 值——如果文件被创建则返回 true,如果文件已存在则返回 false。要创建目录,可以使用 mkdir() 或 mkdirs() 方法(后者会创建所有缺失的父文件夹):



fun main() {    val dir = File("myFolder/subFolder")    if (dir.mkdirs()) {        println("目录已创建: ${dir.absolutePath}")    } else {        println("无法创建目录")    }}


从文件读取数据



在 Kotlin 中有多种读取文件的方法。让我们看看最常用的几种。



一次性读取整个文件



如果文件较小,可以方便地将内容读取为一个字符串或字符串列表:



fun main() {    val file = File("readme.txt")        // 将整个文本读取为一个字符串    val text: String = file.readText()    println("文件内容:$text")        // 逐行读取    val lines: List<String> = file.readLines()    lines.forEach { println("行: $it") }}


readText() 方法返回一个字符串,而 readLines() 返回一个字符串列表。这两个方法都会在读取后自动关闭文件,既安全又方便。



带缓冲的逐行读取



对于大文件,最好使用 BufferedReader,以避免将整个文件加载到内存中:



fun main() {    val file = File("large_file.txt")    file.bufferedReader().use { reader ->        var line: String?        while (reader.readLine().also { line = it } != null) {            println("正在读取: $line")        }    }}


.use { } 结构确保在代码块执行完毕后资源会被关闭,即使发生异常也是如此。

博客

书籍推荐