Kotlin:appendText和关闭资源
我是Kotlin的新手,但是我有一个强大的Java背景(Java是我的日常工作)。 我喜欢Kotlin的一些快捷功能。 其中一个重要的是File.appendText()。 IMO非常方便。
我的问题是关闭资源。 如果我要使用一个作家,我会做这样的事情:
out8.writer().use { ... }
但是我没有直接在appendText方法上看到任何表示关闭资源的东西。 Kotlin是在幕后为我处理的,还是这个我不得不以另一种方式担心呢?
谢谢。
你可以直接在你的IDE中执行appendText
来找出(在Windows上是Ctrl + B
,在Mac上是⌘B
)。
以下是该方法的实现:
public fun File.appendText(text: String, charset: Charset = Charsets.UTF_8): Unit = appendBytes(text.toByteArray(charset))
这里是appendBytes
方法,它委托工作:
public fun File.appendBytes(array: ByteArray): Unit = FileOutputStream(this, true).use { it.write(array) }
你可以看到它实际上使用了use
帮助器方法,就像你所期望的那样。
你对Writer
没有appendText
函数,你可以在这里看到更多。
使用函数与java-7 try-with-resource表达式相同。 它会在块退出后关闭资源。 实际上, File#appendText调用使用函数来关闭资源。
如果您仅使用File#appendText代替文本,就可以附加文本。 例如:
out8.appendText("content")
如果你想多次操作一个文件,你应该使用File#bufferedWriter() ,因为File#appendText每次都会创建并打开一个新的writer。 例如:
out8.bufferedWriter().use{ it.append("first").append("second") }