gpt4 book ai didi

file - 从输入读取后如何写入文本文件?

转载 作者:行者123 更新时间:2023-12-02 12:48:05 25 4
gpt4 key购买 nike

替代标题:如何使用Kotlin“很好地”“更新”文本文件的内容?

我看过how do i write to a file in kotlin

基本上,建议的解决方案基于创建File对象,然后将其写入:File("somefile.txt").printWriter().use ...
但好:我已经有这样的代码:

File(fname).bufferedReader().lineSequence().flatMap { transform(it) }

其中 transform()是我自己的方法,该方法要么返回原始行,要么在某些特定匹配项匹配时更新某些行。 (其签名为 transform(line : String) : Sequence<String>)

当然:我可以将 flatMap()的结果分配给某个临时变量,然后将其与 printWriter().use一起使用。

但是,有没有一种好的,规范的方法可以在没有临时变量的情况下工作

最佳答案

请注意,您的阅读代码(File().bufferedReader().lineSequence())已经可以简化为:

File(fname).useLines {
it.flatMap(::transform)
}

现在,关于不将其放在中间变量中的编写...
File("writeTo").bufferedWriter().use { writer ->
File("readFrom").useLines { lines ->
lines.flatMap(::transform)
.forEach {
writer.appendln(it)
}
}
}

但是我对此还没有真正的信服...我不太喜欢它;-)
我喜欢这样的东西:
File("readFrom").useLines {
..
}.writeTo("writeTo")

但这只要我使用 useLines ;-)就行不通

但是这里有一些类似的东西:
File("readFrom").useLines {
it.flatMap(::transform)
.writeTo(File("writeTo"))
}

但这需要以下扩展功能:
fun Sequence<String>.writeTo(file: File) {
file.bufferedWriter().use { writer -> forEach { writer.appendln(it) } }
}

另一方面...我一直想拥有一个sequence.toFile-writer ;-)已经对其进行了修改,以使用定界符作为参数...

关于file - 从输入读取后如何写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com