我必須讀取tomcat日誌文件,並且經過一段時間(例如:一個小時)後,我將再次讀取該文件(僅用於新添加的內容),因此我創建了RandomAccessFile記錄我完成的最後一個位置,並使用BufferedReader.readLine()方法。正在寫入文件時正在讀取文件
但是,我發現有時我無法讀取文件的整個行。
例如,Tomcat是特林中寫入以下內容(例如只):
192.168.0.0本地主機/index.html .....
而且在這一刻,當我讀我可能得到的結果:
192.168.0 0本地主機/index.html .....
或
192.168.0.0本地主機/index.html .....
這就是說,我的讀者閱讀uncomplete行,如果該行被寫入。
所以我想知道任何想法來決定正在閱讀的行是否已完成?
這是核心代碼:
raf = new RandomAccessFile(file, "r");
raf.seek(pos);
while ((line = raf.readLine()) != null) {
System.out.println(line);
}
pos = raf.getFilePointer();
raf.close();
我已經試過這(加contidtion):
raf = new RandomAccessFile(file, "r");
raf.seek(pos);
while ((line = raf.readLine()) != null) {
if(line.chartAt(line.length()-1)=='\n'){
System.out.println(line);
} else
raf.seek(pos); //roll back to the last position
}
pos = raf.getFilePointer();
raf.close();
但它不工作..
什麼想法?
也許總是跳過最後一行? – dagge 2010-12-16 11:56:18