【发布时间】:2017-02-14 14:46:31
【问题描述】:
任何向后读取文件的常规方法?看了Reader 类,但似乎没有任何帮助。我的用例主要是查找与条件匹配的文件的最后一行(正则表达式,包含字符串等)。
稍后编辑:
我认为这个问题并不是真正的尾巴问题的重复。我认为 tail 更像是文件的“实时”处理。我的问题更多是处理大日志文件(大小为数十 GB),因此不能将整个文件加载到内存中。文件内容是静态的(在处理过程中不会更新)。
例如,每次更新对象时,我们都会记录一行,说明是哪个用户执行的,稍后我们需要最后一个生成该更新的用户。
谢谢
【问题讨论】:
-
这并不是非常具体的。你可以看看stackoverflow.com/questions/6011345/…、stackoverflow.com/questions/8664705/…,可能还有更多。
-
我同意这个问题本身并不是 groovy 特有的,但我正在尝试看看是否有一些优雅的 groovy 解决方案。
-
您介意发布更多详细信息以及示例数据等相关信息吗?
-
我倾向于同意这不是直接复制。我没有纯粹的 groovy 解决方案,但我有一个使用 groovy 元编程的潜在解决方案。不幸的是,我无法添加它,因为这个问题已被关闭为重复。有人可以考虑重新提出这个问题吗?
-
由于该线程已关闭,我添加了a gist with a potential solution。它确实使用了外部依赖项,但从好的方面来说,它不会将整个文件读入内存,并且确实使用了 groovy 风格的惯用语。它使用 groovy 元编程向 File 类添加了一个
file.findLineReverse { String line -> ... }方法。