我正在寻找影响最小的方法来读取一些不同的日志文件。通过“最小影响”,我的意思是读取不会影响日志轮换,不会导致过度的I / O活动等等。我希望用Java实现这一点...
谷歌向我提供了以下一些代码:FileStream fs = new FileStream("C:\foo.txt",
FileMode.Open,FileAccess.Read, FileShare.ReadWrite);
这应该是失败的实现,但是,我不太确定我的Java“剪切和粘贴”能力,并想知道是否有更好的方法来实现这一点。这里的大图是转移一些apache和tomcat日志,根据应用程序活动寻找一些关键条目,并根据条目采取一些行动。无论如何,任何提示?谢谢!
答案 0 :(得分:1)
从here
中选择一个:)
我没有尝试过所有这些,但Jon Skeet对如何不这样做有一些有用的评论。
我的赌注是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();
}
查看该问题的详细信息。