2010-10-05 66 views
0

我有一個ASCII格式的文件,其中需要執行2個步驟的250k +行文本。使用Java對大文本文件中的數據進行劃分和提取

1)掃描整個文件,並通過匹配給定的正則表達式模式劃分部分。

2)讀取數據的每個部分並從中解析子部分。

一種選擇是使用BufferedReader對文件進行面向行的掃描,測試每行的匹配並存儲匹配的行號。

是否有更高效的選項可能使用nio命名空間?

回答

0

也許通過一串流來抽取文件;一個只傳遞匹配正則表達式的部分的流,接下來是執行解析步驟的流。

例如

OutputStream os = RegexFilterOutputStream(
        new ParsingStuffOutputStream() 
       ); 
while(input not empty) { 
    // write stuff from input to os 
}