Kotlin学习笔记(11)--IO操作

文件读写操作

IO操作

Kotlin 提供了多种方式进行输入输出操作,包括读取文件、写入文件等。可以使用标准库中的 java.io 包或更现代的 kotlin.io 工具。

文件读写

读取文件

import java.io.File

fun main() {
    val filePath = "example.txt"
    val file = File(filePath)

    if (file.exists()) {
        val content = file.readText()
        println("File Content:\n$content")
    } else {
        println("File does not exist.")
    }
}

写入文件

import java.io.File

fun main() {
    val filePath = "output.txt"
    val file = File(filePath)

    val textToWrite = "Hello, Kotlin IO!"
    file.writeText(textToWrite)
    println("Text written to $filePath")
}

追加内容到文件

import java.io.File

fun main() {
    val filePath = "output.txt"
    val file = File(filePath)

    val additionalText = "\nAppending new line."
    file.appendText(additionalText)
    println("Text appended to $filePath")
}

BufferedReader 和 BufferedWriter

BufferedReader 读取文件

import java.io.BufferedReader
import java.io.File
import java.io.FileReader

fun main() {
    val filePath = "largeFile.txt"
    val file = File(filePath)

    if (file.exists()) {
        BufferedReader(FileReader(file)).use { reader ->
            var line: String?
            while (reader.readLine().also { line = it } != null) {
                println(line)
            }
        }
    } else {
        println("File does not exist.")
    }
}
  • use 函数类似于Java 的 try with resource,在使用完后,会自动关闭资源。

BufferedWriter 写入文件

import java.io.BufferedWriter
import java.io.File
import java.io.FileWriter

fun bufferedWriterExample(filePath: String, content: List<String>) {
    val file = File(filePath)
    BufferedWriter(FileWriter(file)).use { writer ->
        for (line in content) {
            writer.write(line)
            writer.newLine()
        }
    }
}

InputStream 和 OutputStream

使用 InputStream 读取二进制文件

import java.io.File
import java.io.FileInputStream

fun readBinaryFile(filePath: String): ByteArray? {
    val file = File(filePath)
    return if (file.exists()) {
        FileInputStream(file).use { inputStream ->
            inputStream.readBytes()
        }
    } else {
        println("文件不存在")
        null
    }
}

使用 OutputStream 写入二进制文件

import java.io.File
import java.io.FileOutputStream

fun writeBinaryFile(filePath: String, data: ByteArray) {
    val file = File(filePath)
    FileOutputStream(file).use { outputStream ->
        outputStream.write(data)
    }
}

NIO

使用 NIO 读写文件

读取文件内容

import java.nio.file.Files
import java.nio.file.Paths

fun nioReadFile(filePath: String): String? {
    return try {
        val path = Paths.get(filePath)
        Files.readString(path)
    } catch (e: IOException) {
        println("读取文件时发生错误: ${e.message}")
        null
    }
}

写入文件内容

import java.nio.file.Files
import java.nio.file.Paths
import java.nio.charset.StandardCharsets

fun nioWriteFile(filePath: String, content: String) {
    try {
        val path = Paths.get(filePath)
        Files.writeString(path, content, StandardCharsets.UTF_8)
    } catch (e: IOException) {
        println("写入文件时发生错误: ${e.message}")
    }
}
posted @ 2024-10-19 19:21  Jacob-Chen  阅读(92)  评论(0)    收藏  举报