我需要在运行时使用Java分析日志文件。
我需要的是,能够获取大文本文件,并在特定范围内搜索某个字符串或正则表达式。
范围本身是由另一次搜索推断出来的。
例如,我想搜索文件中的字符串"operation ended with failure"
,而不是整个文件,只能从显示"starting operation"
的行开始。
当然我可以使用普通InputStream
和文件阅读来做到这一点,但有没有一个库或工具可以帮助更方便地完成它?
答案 0 :(得分:1)
如果文件真的很大,那么在你的情况下,好的书面java或任何* nix工具解决方案几乎同样慢(它将被绑定到IO)。在这种情况下,你不会避免逐行读取整个文件....在这种情况下,几行java代码就可以完成这项工作...但不是一次性搜索我会考虑在生成时拆分文件,这可能会更有效率。您可以将日志文件重定向到另一个程序/脚本(awk或python对它来说是完美的)并在线生成/在生成时而不是在事后生成文件。
答案 1 :(得分:0)
检查一下 - http://johannburkard.de/software/stringsearch/
希望有所帮助;)