Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Groovy向后读取文件_Regex_File_Groovy - Fatal编程技术网

Regex Groovy向后读取文件

Regex Groovy向后读取文件,regex,file,groovy,Regex,File,Groovy,有向后读取文件的groovy方法吗?看了一眼课堂,但似乎没有任何帮助。我的用例主要是查找与条件(regex、包含字符串等)匹配的文件的最后一行 稍后编辑: 我认为这个问题并不是尾部问题的翻版。我认为tail更像是对文件的“实时”处理。我的问题更多的是处理大型日志文件(大小为几十GB),因此无法将整个文件加载到内存中。文件内容是静态的(在处理过程中不更新) 例如,每次更新一个对象时,我们都会记录一行,说明是哪个用户更新的,稍后我们需要记录生成该更新的最后一个用户 谢谢这对我很有用: String

有向后读取文件的groovy方法吗?看了一眼课堂,但似乎没有任何帮助。我的用例主要是查找与条件(regex、包含字符串等)匹配的文件的最后一行

稍后编辑:

我认为这个问题并不是尾部问题的翻版。我认为tail更像是对文件的“实时”处理。我的问题更多的是处理大型日志文件(大小为几十GB),因此无法将整个文件加载到内存中。文件内容是静态的(在处理过程中不更新)

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

谢谢

这对我很有用:

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()可能会对您有所帮助。

这对我很有用:

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()可能会对您有所帮助。

这不会向后读取文件,但会向后处理行,我相信这与查找“文件中符合条件的最后一行”的预期用例是一致的


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

这不会向后读取文件,但会向后处理行,我相信这与查找“文件中与条件匹配的最后一行”的预期用例是一致的


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

这不是真正特定于groovy的。你可以看一看,可能还有更多。我同意这个问题本身不是groovy特有的,但我正在尝试看看是否有一些优雅的groovy解决方案。你介意发布更多的细节和相关信息,比如示例数据吗?我倾向于同意这不是一个直接的重复。我没有一个纯groovy解决方案,但我有一个使用groovy元编程的潜在解决方案。不幸的是,我无法添加它,因为这个问题已作为重复问题结束。有人会考虑重新打开这个问题吗?因为这个线程是关闭的,我补充说。它确实使用了一个外部依赖项,但从正面来看,它不会将整个文件读入内存,而且它确实使用了groovy风格的习惯用法。它使用groovy元编程将
file.findLineReverse{String line->…}
方法添加到file类中。你可以看一看,可能还有更多。我同意这个问题本身不是groovy特有的,但我正在尝试看看是否有一些优雅的groovy解决方案。你介意发布更多的细节和相关信息,比如示例数据吗?我倾向于同意这不是一个直接的重复。我没有一个纯groovy解决方案,但我有一个使用groovy元编程的潜在解决方案。不幸的是,我无法添加它,因为这个问题已作为重复问题结束。有人会考虑重新打开这个问题吗?因为这个线程是关闭的,我补充说。它确实使用了一个外部依赖项,但从正面来看,它不会将整个文件读入内存,而且它确实使用了groovy风格的习惯用法。它使用groovy元编程将
file.findLineReverse{String line->…}
方法添加到file类。由于文件大小,无法在内存中加载完整的文件内容由于文件大小,无法在内存中加载完整的文件内容由于文件大小,无法在内存中加载完整的文件内容。我假设FileUtils#backWardsRead是来自。这看起来很有趣,谢谢。由于文件大小,无法在内存中加载完整的文件内容。我假设FileUtils#backWardsRead是来自。那看起来很有趣,谢谢。