gpt4 book ai didi

kotlin - 遍历文件,按模式拆分

转载 作者:行者123 更新时间:2023-12-02 12:39:26 27 4
gpt4 key购买 nike

我试图把我的头围绕文件流处理。得到的输入看起来像这样:

bla
blubb

blubber
testcode

有几个文件都像上面一样。现在,我正在使用单个文件方法,该方法将整个文件读入内存并将其拆分:
Files.newBufferedReader("myfile").use { f ->
f.readText().splitToSequence("\n\n").forEach {
// do my stuff
}
}

现在,我试图将其推广到较大的输入(使其难以保存在内存中)和多个文件。理想情况下,我会将输入文件的整个目录视为我在 \n\n上分割并处理各个部分的单行流。我该怎么做?

最佳答案

您可以将文件读取为一系列文本行,然后使用空行作为分隔符来重新组合这些行:

File("myfile").useLines { lines ->
val lineBlocks: Sequence<List<String>> = buildSequence {
val block = mutableListOf<String>()
for (line in lines) {
when {
line.isNotEmpty() -> block.add(line)
block.isNotEmpty() -> {
yield(block.toList())
block.clear()
}
}
}
if (block.isNotEmpty()) yield(block.toList())
}

lineBlocks.forEach {
println(it.joinToString())
}
}

在这里,您可以在 lineBlocks中得到结果,它是一个序列,其中每个元素是单个块中的行列表。

关于kotlin - 遍历文件,按模式拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43502031/

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