在以前Java中要进行写档是一个建很麻烦的事情,要记得create file,得到BufferReader
后还要透过close
并且记得try catch避免exception发生,而kotlin提供了一个appendText
的extension,让你直接可以对file进行写入文字
File("path\fileName.txt") .appendText("Hello")
如果你要持续写入就可以变成
val file = File("path\fileName.txt")file.appendText("Hello")file.appendText(" World")file.appendText(" :)")
如此就可以完成写入文字了,也不需要额外的进行close
或者flush
那他实际是怎么运作的? 他其实是一个kotlin extension
从source code可以看到他是在kotlin 1.4增加的 extension,并且他其实有两个参数,第二个是encoding ,default value 是utf-8,如果你没有要额外指定编码,就不需要额外设定,
而他呼叫了另一个appendText
,并且先将String toBytesArray
传入
实际是透过FileOutputStream
后透过use
这个T.extension,透过他就可以直接对bytes写入,并且在scope结束后会自动进行close ,也就是每一次的appendText
,都会造成他马上进行写档,因此如果你是一个大量快速的log,会比较不建议使用appendText
,因为这样会造成大量的IO,也可能会影响速度(大量的话会建议改成在一定buffer后才进行IO写入)
以上就是File的appendText使用方法与原理,其实他还有writeText
、readText
,writeBytes
跟readLines
等等其他方便使用的extension,对于要简易进行文字写入的话就可以参考并且理解看看他的原理啰。