2011-07-15 67 views
3

我需要使用Java在運行時分析日誌文件。java - 分析大文本文件

我需要的是,爲了能夠有一個大的文本文件,然後搜索一定範圍內的行內的某個字符串或正則表達式。

範圍本身由另一個搜索推導出來。

例如,我想在文件中搜索字符串"operation ended with failure",但不是整個文件,只從"starting operation"開始。

當然,我可以用普通InputStream和文件讀取做到這一點,但有一個庫或工具,這將有助於做到這一點更方便?

+0

方便 - 聽起來像*懶加載* :-D –

+0

它必須在java嗎?我的意思是,grep(一個* nix標準實用程序)完全適合你......這是一個命令行工具。 – chahuistle

+0

或者使用Splunk的 - http://www.splunk.com –

回答

1

如果該文件確實非常大,那麼你的情況是好寫Java或任何* nix的工具解決方案將幾乎同樣慢(它將被綁定到IO)。在這種情況下,你不會避免逐行閱讀整個文件....在這種情況下,幾行java代碼就可以完成這項工作......但是,不是一次性的搜索,我會考慮在生成時分割文件,這可能更有效。你可以將重定向到將日誌文件重定向到另一個程序/腳本(awk或python對它來說是完美的),並且在生成時而不是事後分割文件。