在Kotlin中,如果你想使用字节流将字符串写入文件或从文件读取字符串,你可以结合OutputStreamWriter
与InputStreamReader
以及缓冲区来优雅地实现。
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
}
}
Kotlin
的writeText()
和readText()
方法已经封装了字符流的操作,并且处理了资源关闭等清理工作,使代码更为简洁易读。默认情况下,它们使用UTF-8
编码,但你也可以传递自定义的字符集参数。