【发布时间】:2019-04-22 08:04:43
【问题描述】:
我对 Kotlin 完全陌生,似乎无法获得附加到文件的过程。 我有 val path 给出的文件名: String = ".....txt" 我想要一个方法在我的类中使用 line: String 并将其附加到我的文件末尾(在新行上)。 我的测试用例是:对具有两条不同行的方法进行两次连续调用,例如“foo”和“bar”,我希望文件如下:
foo
bar
如果我的方法如下所示,它会起作用:
fun writeLine(line: String) {
val f = File(path!!)
f.appendText(line + System.getProperty("line.separator"))
}
而且它绝对不会像这样工作:
fun writeLine(line: String) {
val f = File(path!!)
f.bufferedWriter().use { out->
out.append(line)
out.newLine()
}
}
它会在每次调用时重写我的文件,所以我的文件中只有“bar”。 它也不适用于 printWriter:
fun writeLine(line: String) {
val f = File(path!!)
f.printWriter().use { out->
out.append(line)
}
}
我得到了与 BufferedWriter 相同的结果。为什么?我就是不明白。如何追加 BufferedWriter 或 PrintWriter?
【问题讨论】:
-
不是直接的解决方案,但我强烈建议您尽可能避免使用
File。见java7fs.wikia.com/wiki/Why_File_sucks -
谢谢!我会调查的。