我想知道文件何时轮换,因为我正在观看一个文件,我必须获取一个包含该文件内容和新文件的新文件。我必须使用Java6,所以我没有JDK7的新功能。
问题是,当我旋转文件(保留对文件的引用)时,旧的引用得到更新,我希望它指向旧文件。
我正在做这样的事情:
if (reader == null) {
reader = new RandomAccessFile(toWatch, "r");
}
System.out.println("LasModified:" + new Date(toWatch.lastModified()));
System.out.println("Cuando se creo to Watch long:" + reader.length()); --> lenght is okay.
//Here, I use logrotate to simulate what it could happen. (I execute the code in debug mode to be able to do it
long len = 0L;
File f = new File("/home/gortiz/logRotate/test.flume");
System.out.println("LasModified NewReader:" + new Date(f.lastModified()));
RandomAccessFile newReader = new RandomAccessFile(toWatch, "r");
len = reader.length(); --> len = 0
long newLength = newReader.length(); --> newLenght = 0
我可以检查是否有 name.1 的文件。通常日志系统会像这样重命名日志。但是,这不是一个好的解决方案,因为没有人保证这会像日志系统重命名文件一样,甚至可以将它们移动到另一个目录。