2009-01-13 54 views
1

我正在尋找影響最小的方法來讀取幾個不同的日誌文件。通過「影響最小」我的意思是讀取不會影響日誌的旋轉,不會導致不適當的I/O活動等。我期待着用Java來實現這一目標...什麼是讀取另一個進程正在寫入的文件的最好(影響最小?)方法?

Google爲我提供了以下代碼小小代碼:

FileStream fs = new FileStream("C:\foo.txt", 
FileMode.Open,FileAccess.Read, FileShare.ReadWrite); 

這應該是failry容易實現,但是,我沒有太相信我的Java的「剪切和粘貼」能力,想知道是否有更好的方法來做到這一點。這裏的大圖是根據應用程序活動來查找一些apache和tomcat日誌以查找一些關鍵條目,並根據條目採取一些操作。無論如何,任何提示?謝謝!

回答

1

接一個從here

:)

我還沒有嘗試他們所有,但也有從喬恩斯基特如何不要做一些有用的意見。

我打賭的是nio之一。

FileInputStream stream = new FileInputStream(new File(path)); 
    try { 
    FileChannel fc = stream.getChannel(); 
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); 
    /* Instead of using default, pass in a decoder. */ 
    return CharSet.defaultCharset().decode(bb).toString(); 
    } 
    finally { 
    stream.close(); 
    } 

查看該問題的詳細信息。

相關問題