在Java中旋转文件时丢失对File的引用

时间:2014-02-27 08:27:17

标签: java logrotate

我想知道文件何时轮换,因为我正在观看文件而我必须获取包含此文件内容和新文件的新文件。我必须使用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

我可以查看是否有名称为1的文件。通常日志系统会重命名这样的日志..但是,它不是一个好的解决方案,因为没有人会保证这会像日志系统重命名文件一样,甚至可以将它们移动到另一个目录。

0 个答案:

没有答案