在Kotlin中,如果你想使用字节流将字符串写入文件或从文件读取字符串,你可以结合OutputStreamWriterInputStreamReader以及缓冲区来优雅地实现。

import java.io.*

fun writeStringToFileUsingJavaIo(filePath: String, content: String, charset: Charset = Charsets.UTF_8) {
    val file = File(filePath)
    val outputStream: OutputStream = FileOutputStream(file)

    try {
        val writer = OutputStreamWriter(outputStream, charset)
        writer.write(content)
        writer.flush()
    } catch (e: IOException) {
        e.printStackTrace()
    } finally {
        outputStream.close()
    }
}

fun readStringFromFileUsingJavaIo(filePath: String, charset: Charset = Charsets.UTF_8): String? {
    val file = File(filePath)
    val inputStream: InputStream = FileInputStream(file)

    try {
        val reader = InputStreamReader(inputStream, charset)
        return reader.readText()
    } catch (e: IOException) {
        e.printStackTrace()
        return null
    } finally {
        inputStream.close()
    }
}

// 使用 Kotlin IO API(推荐)
import kotlin.io.*

fun writeStringToFileUsingKotlinIo(filePath: String, content: String, charset: Charset = Charsets.UTF_8) {
    File(filePath).writeText(content, charset)
}

fun readStringFromFileUsingKotlinIo(filePath: String, charset: Charset = Charsets.UTF_8): String? {
    return try {
        File(filePath).readText(charset)
    } catch (e: IOException) {
        e.printStackTrace()
        null
    }
}

KotlinwriteText()readText()方法已经封装了字符流的操作,并且处理了资源关闭等清理工作,使代码更为简洁易读。默认情况下,它们使用UTF-8编码,但你也可以传递自定义的字符集参数。