2016-04-20 26 views
0

我有這段代碼來檢查日誌行是否在某個時間發送。問題是,即使日誌行不是我想要的時間(比如說「稍後」,然後搜索時間),文件指針也會超過。我想增加文件指針只有在訂單最終被帶到answer List<String>如何用隨機訪問文件「偷看」?

@Override 
public List<String> getForMinuteTimeFrame(LocalTime currentTime) { 
    List<String> lines = new ArrayList<>(); 
    String line = null; 
    while ((line = randomAccessFile.readLine()) != null) { 
     if (fetchTime(line).isEqual(currentTime)) { 
      lines.add(line); 
     } 
    } 
    return lines; 
} 

我怎麼能這樣做優雅?輸入文件非常大(〜250 MB),所以我逐行閱讀。

回答

0

您應該能夠使用「randomAccessFile.getFilePointer()」獲取當前文件點,並在每次成功讀取您關心的一行時存儲該文件點。然後在返回之前,可以使用randomAccessFile.seek()將當前文件位置設置回該位置,並將您從getFilePointer()獲得的值傳遞給該位置。這會將讀取點恢復到最後一行讀取之前的狀態。