gpt4 book ai didi

macos - Mac 和 FreeBSD 上的 Java 8 不同的文件按修改数据排序顺序

转载 作者:行者123 更新时间:2023-12-01 16:53:35 25 4
gpt4 key购买 nike

我在排序文件时遇到了奇怪的问题。

给定环境

Dev: Mac OS X 10.11.3 OracleJDK 1.8.0_45
PreProduction env: FreeBSD 10 OpenJDK 1.8.0_72

代码

public static String getLatestTag() {
File tagsDir = new File("./.git/refs/tags");
...
File[] tags = tagsDir.listFiles();
List<File> tagsList = Arrays.asList(tags);
Collections.sort(tagsList, (f1, f2) -> {
if(f1.lastModified() > f1.lastModified()) {
return 1;
} else if(f1.lastModified() == f2.lastModified()) {
return 0;
} else {
return -1;
}
});
logTagsList(tagsList);
String latestTag = tagsList.get(0).getName();
Logger.info("Application version is: %s", latestTag.replaceAll("[^\\d.]", ""));
return latestTag;
}

private static void logTagsList(List<File> tags) {
if(Logger.isDebugEnabled()) {
Logger.debug("Tags found");
for(File tag : tags) {
Logger.debug("Tag: %s, Date modified: %s", tag.getName(), tag.lastModified());
}
}
}

给出输出

在 Mac 上:

17:49:50,601 DEBUG ~ Tags found
17:49:50,602 DEBUG ~ Tag: v0.97, Date modified: 1457277455000
17:49:50,602 DEBUG ~ Tag: v0.95, Date modified: 1455809758000
17:49:50,602 INFO ~ Application version is: 0.97

在 FreeBSD 上:

18:52:49,902 DEBUG ~ Tags found
18:52:49,903 DEBUG ~ Tag: v0.95, Date modified: 1456038720000
18:52:49,903 DEBUG ~ Tag: v0.97, Date modified: 1457277515000
18:52:49,904 INFO ~ Application version is: 0.95

在这两种情况下,运行应用程序的用户都具有 .git 目录的读取权限。

重现步骤:1)git初始化2)引导java应用程序(或播放框架1.4应用程序以进行完整重现)3)添加给定代码4) 向 git 提交 2 次5)标记这些提交6) 运行应用程序7)检查日志

最佳答案

您在比较中遇到错误:if(f1.lastModified() > f1.lastModified()) - 您正在此处比较 f1 与 f1。如果两个文件没有同时修改,那么无论您比较什么,您总是返回 -1。这会导致不可预测的行为。

关于macos - Mac 和 FreeBSD 上的 Java 8 不同的文件按修改数据排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35829292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com