3

在 Linux 中,当您打开文件的输入流时,另一个进程可以重命名该文件。因此,当文件翻转时,您仍然可以从流中读取。在 Windows 中,当您打开输入流时,在关闭输入流之前无法重命名该文件。如何在不影响“重命名”过程的情况下读取文件?

我尝试过使用 java.nio.FileChannel。它适用于不同进程同时读取和写入文件(例如Java进程读取和记事本写入),但不适用于重命名文件(例如Java进程读取但重命名命令不起作用)。

4

1 回答 1

1

最简单的解决方案如下(我只是从我的一条评论中复制)

在您阅读完新添加的行后,关闭阅读器,这样尝试进行旋转的其他进程将成功。但是进行日志轮换的进程必须尝试多次,直到它发现没有其他进程正在读取它。

apache commons IO Tailer可以做到这一点。

于 2013-03-01T15:31:48.033 回答