我是Kotlin的新手,但我有很强的Java背景(Java是我的日常工作)。我很喜欢Kotlin的一些快捷功能。其中一个重要的是File.appendText()。这很方便,IMO。
我的问题是关闭资源。如果我要使用作家,我会做这样的事情:
out8.writer().use { ... }
但我没有直接在appendText方法上看到任何表明关闭资源的东西。 Kotlin是否在幕后为我处理这个问题,还是我不得不以另一种方式担心这个问题?
感谢。
答案 0 :(得分:4)
您可以跳转到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
辅助方法。
答案 1 :(得分:0)
{J} appendText
上没有Writer
功能,您可以进一步查看here。
use函数与java-7 try-with-resource 表达式相同。它将在块退出后关闭资源。实际上,File#appendText调用use函数来关闭资源。
IF 只有在您使用File#appendText后才能附加文字。例如:
out8.appendText("content")
如果你想多次操作一个文件,你应该使用File#bufferedWriter(),因为File#appendText会创建&每次都开一个新作家。例如:
out8.bufferedWriter().use{
it.append("first").append("second")
}