如何获取 Java 中目录的最新文件
How to get the most recent file of a directory in Java
假设我在系统上有一个特定目录(特别是 Ubuntu),其中包含其他程序生成的备份或日志。我如何在 Java 中找到并打开最近创建(或修改)的文件作为 File
?
我需要一个不依赖文件名以时间戳或顺序名称命名的场景的解决方案,如log1,log2, etc...
。子目录将被忽略。
您可以循环遍历目录中的文件并比较它们并找到最后修改的文件。
public File getLastModifiedFile(File directory) {
File[] files = directory.listFiles();
if (files.length == 0) return null;
Arrays.sort(files, new Comparator<File>() {
public int compare(File o1, File o2) {
return new Long(o2.lastModified()).compareTo(o1.lastModified());
}});
return files[0];
}
获取最后修改时间:
File file = getLastModifiedTime("C:\abcd");
long lastModified = file != null ? file.lastModified() : -1 // -1 or whatever convention you want to infer no file exists
此问题的第二个答案应该符合您的要求:
whosebug.com/questions/2064694/how-do-i-find-the-last-modified-file-in-a-directory-in-java
file.lastModified()
为您提供特定文件的最后修改时间,您可以简单地获取每个文件的时间,然后遍历这些时间以找到 "newest" 时间。
问题似乎与 link 中提出的问题重复。
假设我在系统上有一个特定目录(特别是 Ubuntu),其中包含其他程序生成的备份或日志。我如何在 Java 中找到并打开最近创建(或修改)的文件作为 File
?
我需要一个不依赖文件名以时间戳或顺序名称命名的场景的解决方案,如log1,log2, etc...
。子目录将被忽略。
您可以循环遍历目录中的文件并比较它们并找到最后修改的文件。
public File getLastModifiedFile(File directory) {
File[] files = directory.listFiles();
if (files.length == 0) return null;
Arrays.sort(files, new Comparator<File>() {
public int compare(File o1, File o2) {
return new Long(o2.lastModified()).compareTo(o1.lastModified());
}});
return files[0];
}
获取最后修改时间:
File file = getLastModifiedTime("C:\abcd");
long lastModified = file != null ? file.lastModified() : -1 // -1 or whatever convention you want to infer no file exists
此问题的第二个答案应该符合您的要求:
whosebug.com/questions/2064694/how-do-i-find-the-last-modified-file-in-a-directory-in-java
file.lastModified()
为您提供特定文件的最后修改时间,您可以简单地获取每个文件的时间,然后遍历这些时间以找到 "newest" 时间。
问题似乎与 link 中提出的问题重复。