如何在使用JAVA的目录中获得最后创建(不是最后修改)的文件夹名称/路径?我找不到与JAVA相关的答案,因此在这里发帖。
它需要几个步骤,例如:
- 列出目录的所有元素
- 目录过滤器
- 获取文件创建时间
- 在列表中保存路径+时间组合
- 查找列表中关于时间的最小值
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.ArrayList;
import java.util.List;
public class LastCreatedDir {
record PathAndTime(Path path, FileTime time) { }
public static void main(String[] args) throws Exception {
Path path = Paths.get("..\");
List<PathAndTime> list = new ArrayList<>();
// 1. -------------------------------------
try (var files = Files.list(path)) {
files.forEach(p -> {
// 2. -----------------------------
if (Files.isDirectory(p)) {
try {
// 3. -----------------------
BasicFileAttributes attr = Files.readAttributes(p,
BasicFileAttributes.class);
FileTime fileTime = attr.creationTime();
// 4. -----------------------
list.add(new PathAndTime(p, fileTime));
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
// 5. -------------------------------------
var result = list.stream().min((a, b) -> {
return b.time.compareTo(a.time);
});
result.ifPresentOrElse(entry -> {
System.out.println(entry.path + " @ " + entry.time);
}, () -> {
System.out.println("No directories found");
});
}
}