Tag: 最后修改

Java:检测对文件的修改(文件轮询?)

在Java中检测文件修改的最有效方法是什么? 我已经阅读过关于文件轮询的内容,但是,随着观看文件数量的增加,轮询方法有许多缺点。 我宁愿不使用轮询,但在线的一些解决方案似乎指向文件轮询作为推荐的方法。 我希望可能是一个与操作系统相关的文件系统更新回调解决方案 – 这在Linux和Windows中都可能吗? 鉴于我目前只打算“观看”2个文件,我仍然对文件轮询解决方案持开放态度。 理想情况下,我希望文件轮询不会对性能产生很大影响。 我知道Java 7的WatchService,但由于7尚未正式发布,我对使用该方法或JNI库犹豫不决。 非常感激! 编辑:文件轮询似乎是要走的路。 如果任何人都可以推荐最安全/最有效的方式来实现文件轮询,那就太棒了。

maven如何只编译修改过的java文件?

我只是很想知道这一点,当我给mvn install而不做’clean’时,maven只编译修改过的java文件。 maven如何识别java文件是否被修改? 我相信它没有使用文件的最后修改属性。 我相信的原因:我有一个模块,在从svn合并更改后,我给了mvn install并且它没有编译修改后的文件,当我看到更改时,我看到’long’被修改为’Long’in吸气剂和二传手。 所以我只是想知道如果java文件发生了变化,maven是如何识别的? (PS我正在使用Apache Maven 3.0.3,如果这很重要)

从Java获得毫秒分辨率的文件mtime

当我使用Files.getLastModifiedTime从Java读取文件的mtime时,返回值被截断为整秒。 我知道这可以在其他系统上运行,以获得毫秒级的分辨率,那么我的可能有什么不同呢? 这是一个完整的独立测试,可以编译和运行: import java.nio.file.attribute.FileTime; import java.nio.file.Files; import java.nio.file.Paths; public class Test { public static void main(String[] args) throws java.io.IOException { FileTime timestamp = Files.getLastModifiedTime(Paths.get(“/tmp/test”)); System.out.println(timestamp.toMillis()); } } 输出是(使用我的特定测试文件) 1405602038000 ,而ls显示: $ ls –full-time /tmp/test -rw-rw-r– 1 daniel daniel 0 2014-07-17 16:00:38.413008992 +0300 /tmp/test 我希望Java输出为1405602038413 。 我用ext4在Linux上运行。 我尝试了openjdk 1.7和Oracle jdk 1.8。