【发布时间】:2011-01-25 18:30:32
【问题描述】:
我正在尝试使用它来监视日志文件并将日志行放入数据库中。我遇到的问题是,当包含我的 TailerListener 的线程正在运行时,我无法删除或重命名日志文件。在这种情况下,我不确定当日志文件翻转时会如何反应,这会在夜间发生。我看了一眼 Tailer 的代码,它似乎可以处理日志翻转,但是我看不到被监视的文件何时基本被锁定。
应该没有理由不能删除该文件,因为我只是从中读取。我认为一旦文件被删除/重命名,它只会抛出某种类型的异常。特别是因为 Tailer 似乎是针对“tail -f”的功能而编写的。
我在尝试删除文件时遇到的确切错误:“此操作无法完成,因为该文件已在 Java(TM) Platform SE 二进制文件中打开”
这是我项目中的示例代码:
public static void main(String[] args) {
// TODO code application logic here
File pcounter_log = new File("c:\development\temp\test.log");
try {
TailerListener listener = new PCTailListener();
Tailer tailer = new Tailer(pcounter_log, listener, 5000);
Thread thread = new Thread(tailer);
thread.start();
} catch (Exception e) {
System.out.println(e);
}
}
public class PCTailListener extends TailerListenerAdapter {
public void handle(String line) {
System.out.println(line);
}
}
非常感谢任何关于 Tailer 的信息,特别是 Java 中的文件处理,任何可能让我走上正轨的信息。
【问题讨论】: