多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Kotlin 读取文件教程 > 原文: [http://zetcode.com/kotlin/readfile/](http://zetcode.com/kotlin/readfile/) Kotlin 读取文件教程显示了如何在 Kotlin 中读取文件。 我们展示了几种在 Kotlin 中读取文件的方法。 在本教程中,我们使用`File`方法读取文件。 本教程提供了五个示例,这些示例在 Kotlin 中读取文件。 `thermopylae.txt` ```kt The Battle of Thermopylae was fought between an alliance of Greek city-states, led by King Leonidas of Sparta, and the Persian Empire of Xerxes I over the course of three days, during the second Persian invasion of Greece. ``` 在示例中,我们使用此文本文件。 ## Kotlin 使用`File.readLines`读取文件 `File.readLines()`读取文件内容为行列表。 不应将其用于大文件。 `readfile.kt` ```kt package com.zetcode import java.io.File fun main(args: Array<String>) { val fileName = "src/resources/thermopylae.txt" val lines: List<String> = File(fileName).readLines() lines.forEach { line -> println(line) } } ``` 该示例使用`File.readLines()`读取文件。 ## Kotlin 使用`File.useLines`读取文件 `File.useLines()`读取所有数据作为行列表,并将其提供给回调。 最后关闭读者。 `readfile2.kt` ```kt package com.zetcode import java.io.File fun main(args: Array<String>) { val fileName = "src/resources/thermopylae.txt" val myList = mutableListOf<String>() File(fileName).useLines { lines -> myList.addAll(lines) } myList.forEachIndexed { i, line -> println("${i}: " + line) } } ``` 该示例读取文件并将其打印到控制台。 我们在输出中添加行号。 ```kt val myList = mutableListOf<String>() ``` 可变列表已创建。 ```kt File(fileName).useLines { lines -> myList.addAll(lines) } ``` 使用`File.useLines()`,我们将行列表复制到上面创建的可变列表中。 ```kt myList.forEachIndexed { i, line -> println("${i}: " + line) } ``` 使用`forEachIndexed()`,我们为每行添加一个行号。 ## Kotlin 使用`File.readText`读取文件 `File.readText()`以`String`的形式获取此文件的全部内容。 不建议在大文件上使用此方法。 `readfile3.kt` ```kt package com.zetcode import java.io.File fun main(args: Array<String>) { val fileName = "src/resources/thermopylae.txt" val content = File(fileName).readText() println(content) } ``` 在示例中,我们将整个文件读入一个字符串并将其打印到控制台。 ## Kotlin 使用`InputStream`读取文件 `InputStream`是字节的输入流。 `readfile4.kt` ```kt package com.zetcode import java.io.File import java.io.InputStream import java.nio.charset.Charset fun main(args: Array<String>) { val fileName = "src/resources/thermopylae.txt" val myFile = File(fileName) var ins: InputStream = myFile.inputStream() var content = ins.readBytes().toString(Charset.defaultCharset()) println(content) } ``` 该示例从`File`创建`InputStream`并从中读取字节。 字节转换为文本。 ```kt var ins: InputStream = myFile.inputStream() ``` 从`File`和`inputStream()`创建一个`InputStream`。 ```kt var content = ins.readBytes().toString(Charset.defaultCharset()) ``` 我们使用`readBytes()`从`InputStream`读取字节,然后使用`toString()`将字节转换为文本。 ## Kotlin 使用`readBytes`读取文件 `readBytes()`以字节数组的形式读取文件的全部内容。 不建议在大文件上使用。 `readfile5.kt` ```kt package com.zetcode import java.io.File fun main(args: Array<String>) { val fileName = "src/resources/thermopylae.txt" val file = File(fileName) var bytes: ByteArray = file.readBytes() bytes.forEachIndexed { i, byte -> ( if (i == 0) { print("${byte} ") } else if (i % 10 == 0) { print("${byte} \n") } else { print("${byte} ") }) } } ``` 该示例将文本文件读入字节数组。 它将文件以数字形式打印到控制台。 在本教程中,我们展示了如何在 Kotlin 中读取文件。 您可能也对相关教程感兴趣: [Kotlin 编写文件教程](/kotlin/writefile/)和 [Kotlin Hello World 教程](/kotlin/helloworld/)。