Kotlin:appendText和关闭资源

use*_*059 5 java kotlin

我是Kotlin的新手,但是我有很强的Java背景知识(Java是我的日常工作)。我喜欢Kotlin中的一些快捷功能。最大的文件之一是File.appendText()。IMO,这非常方便。

我的问题是关于关闭资源。如果要使用作家,我会做这样的事情:

out8.writer().use { ... }
Run Code Online (Sandbox Code Playgroud)

但是我没有直接在appendText方法上看到任何指示关闭资源的东西。Kotlin是在幕后为我处理这件事,还是我不得不以其他方式担心的事情?

谢谢。

zsm*_*b13 5

您可以直接appendText在IDE中实施进行查找(Ctrl + B在Windows上,?B在Mac上)。

这是该方法的实现:

public fun File.appendText(text: String, charset: Charset = Charsets.UTF_8): Unit 
    = appendBytes(text.toByteArray(charset))
Run Code Online (Sandbox Code Playgroud)

appendBytes这是将工作委派给的方法:

public fun File.appendBytes(array: ByteArray): Unit 
    = FileOutputStream(this, true).use { it.write(array) }
Run Code Online (Sandbox Code Playgroud)

您可以看到它实际上use按预期使用了helper方法。