Groovy向后读取文件

时间:2017-02-14 14:46:31

标签: regex file groovy

任何向后阅读文件的常规方法?看看Reader课程,但似乎没有任何帮助。我的用例主要是查找匹配条件的文件的最后一行(正则表达式,包含字符串等)。

稍后编辑:

我认为这个问题并不是尾巴的重复。我觉得尾巴更像是一个活着的“生活”。处理文件。我的问题更多的是处理大型日志文件(大小为几十GB),因此不能将整个文件加载到内存中。文件内容是静态的(在处理期间不更新)。

例如,每次更新一个对象时,我们都会记录一行说明哪个用户执行了该操作,稍后我们需要生成该更新的最后一个用户。

由于

2 个答案:

答案 0 :(得分:0)

这对我有用:

String filePath = '/path/to/file'
File file = new File(filePath)
String sample = 'searchSample'

file.text.split('\n').reverse().find {it.contains(sample)}

UPD

也许FileUtils#backWardsRead()会对你有所帮助。

答案 1 :(得分:0)

这不会向后读取文件,但它会向后处理这些行,我认为这与查找“文件中与条件匹配的最后一行”的预期用例相符。

import java.util.stream.Collectors
new File('myfile.csv').newReader()
                      .lines()
                      .collect(Collectors.toList())
                      .reverse()
                      .find { line -> line ==~ myRegex }

这需要Java 8,因为它使用Stream API。