0

我想知道文件何时轮换,因为我正在观看一个文件,我必须获取一个包含该文件内容和新文件的新文件。我必须使用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 的文件。通常日志系统会像这样重命名日志。但是,这不是一个好的解决方案,因为没有人保证这会像日志系统重命名文件一样,甚至可以将它们移动到另一个目录。

4

0 回答 0