在Kotlin比赛后写入文件

Kotlin新手,我想在文件中的特定匹配之后在文件中插入一行。 我知道如何用sed来做到这一点,如下所示:

sed "/some line in file/a some text I'd like to add after line" file 

但是我想了解在Kotlin我会怎么做。 到目前为止,我已经得到尽可能printWriter接口,但我没有看到任何明确暗示偏移或正则expression式参数。

到目前为止,我得到了:

 File("file.txt").printWriter(...) 

谢谢!

GNU“sed”不会插入/删除/更新文件中的行,它会转换输入流,并提供将输出流发送到stdout ,文件,甚至临时文件的选项,然后在转换后覆盖原始文件是完整的(这是“ --in-place选项)。

这里有一些代码,应该让你开始,但请注意,有很多方法来缓冲和读取/写入文件,流等

 val file = File("file.txt") val tempFile = createTempFile() val regex = Regex("""some line in file""") tempFile.printWriter().use { writer -> file.forEachLine { line -> writer.println(when { regex.matches(line) -> "a some text I'd like to add after line" else -> line }) } } check(file.delete() && tempFile.renameTo(file)) { "failed to replace file" } 

有关如何转换文本流的更多详细信息,另见sed,流编辑器 。

Interesting Posts