任何向后阅读文件的常规方法?看看Reader课程,但似乎没有任何帮助。我的用例主要是查找匹配条件的文件的最后一行(正则表达式,包含字符串等)。
稍后编辑:
我认为这个问题并不是尾巴的重复。我觉得尾巴更像是一个活着的“生活”。处理文件。我的问题更多的是处理大型日志文件(大小为几十GB),因此不能将整个文件加载到内存中。文件内容是静态的(在处理期间不更新)。
例如,每次更新一个对象时,我们都会记录一行说明哪个用户执行了该操作,稍后我们需要生成该更新的最后一个用户。
由于
答案 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。