java - 符号链接(symbolic link)的修改

标签 java file symlink

当使用Java的单个文件存在多个符号链接(symbolic link)时,如何识别哪个链接修改了目标文件?我无法找到哪个文件修改了目标文件。

示例:D:\sample.txt,D:\folder1\sample.txt ;这两个是链接。目标文件位于E:\sample.txt .

现在如何判断是否D:\sample.txtD:\folder1\sample.txt修改了E:\sample.txt

最佳答案

How to identify which link modified the target file when multiple symbolic link exists for a single file using java?

这是不可能的。

这在任何编程语言中都是不可能的。

此功能必须得到操作系统的支持,而我遇到过的操作系统均不支持。

<小时/>

有些启发式方法(使用时间戳)可能“在大多数情况下”都有效,但在每种情况下,启发式方法都不会给出答案,甚至会给出错误的答案。以下是一些令人困惑的问题:

使用简单的时间戳启发式:

  • 如果任一符号链接(symbolic link)位于只读文件系统或未记录访问时间的文件系统(例如,取决于挂载选项),则不会,并且

  • 如果在上次文件写入后在符号链接(symbolic link)上发生文件读取,则它将不起作用。

当您添加观察者时:

  • 如果您当时没有“观看”(废话!),它就不会起作用,并且

  • 如果您有太多观察者事件,并且您无法跟上,它将不起作用。

(此外,我认为您无法获取有关使用符号链接(symbolic link)的事件。因此您仍然需要检查符号链接(symbolic link)访问时间戳。这意味着只读文件系统等在这里是一个问题也是。)

还有这样的场景:

  • 两个符号链接(symbolic link)都用于写入文件,
  • 您不了解所有符号链接(symbolic link),或者
  • 用于写入的符号链接(symbolic link)已被删除或“触及”。

这些可能超出了 OP 用例的范围。但它们与OP第一句提出的一般问题相关。

关于java - 符号链接(symbolic link)的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835230/

相关文章:

安卓写入文件

c - 从文件中逐字读取或一次读取一行并使用 C 拆分字符串更有效率?

java - Tomcat 7 到 war 文件的符号链接(symbolic link)

java - Rational Rhapsody 调试 JVM

java - 使用 Netbeans 在 Java 中进行 Web 开发

java - 为什么 ActionListener 不起作用?

php - 如何使用 php 保存 rtf 文件?

linux - 打印 Cscope 符号链接(symbolic link)的绝对路径

linux - 是否可以在同一 SVN 存储库的不同目录中建立从文件 A 到文件 B 的链接?

Java 日期解析失败