【发布时间】:2015-05-01 02:59:00
【问题描述】:
我想对在文件移动/重命名后仍然存在的文件有某种文件句柄。这不一定是平台无关的,如果它只适用于Java7 + linux就可以了,如果可以假设文件不会更改目录,那就更好了。
用例是我想编写一个类似于 logstash-file-input 的日志拖尾输入源,即我可以运行来拖尾文件的工具,即使该文件被旋转(即移动/重命名) ) 当我的尾随应用程序关闭时,我希望能够在尾随应用程序再次启动时找到该文件。
我查看了 BasicFileAttributes.fileKey,但没有找到从 fileKey 到 File/Path 对象的任何方法。
有谁知道这是否可以做到?
最好的问候 /托马斯
【问题讨论】:
-
我不是 Linux 专家,但也许您可以在文件系统中创建一个指向日志文件的硬链接,然后将其尾随而不是实际文件?
-
您可以使用
WatchService来实现这一点 -
@Philipp。是的,这可能是一种方式,我已经看到了类似问题的答案。不过这似乎有点麻烦,可能与为此编写一些 JNI 模块相当。
标签: java nio log-rotation