Java:如何获取路径中的最新(上次修改)目录

Java:如何获取路径中的最新(上次修改)目录,java,file-io,directory,Java,File Io,Directory,我需要获取路径中最新(上次修改)的目录/文件夹 我为目录中的文件找到了类似的解决方案,但没有为路径中的目录找到类似的解决方案。请查看org.apache.commons.io.FileUtils.listFilesAndDirs(),然后迭代列表并按file.lastModified查找下面的一个小片段作为示例。需要添加适当的异常和错误处理 public class LastModifiedDir { public static void main(String[] args) {

我需要获取路径中最新(上次修改)的目录/文件夹


我为目录中的文件找到了类似的解决方案,但没有为路径中的目录找到类似的解决方案。

请查看
org.apache.commons.io.FileUtils.listFilesAndDirs()
,然后迭代列表并按
file.lastModified

查找下面的一个小片段作为示例。需要添加适当的异常和错误处理

public class LastModifiedDir {

    public static void main(String[] args) {
        final String filesLocation = "... your directory to check ...";

        Path path = Paths.get(filesLocation);

        List<Path> dirs = new ArrayList<>();

        try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(path)) {
            for (Path entry : dirStream) {
                if (Files.isDirectory(entry, LinkOption.NOFOLLOW_LINKS)) {
                    dirs.add(entry);
                }
            }
            Collections.sort(dirs, ComparatorReverseLastModificationTime());

            System.out.println("recently changed directory: " + dirs.get(0));
        } catch (IOException e) {
            // add your exception handling here
            e.printStackTrace(System.err);
        }
    }

    static Comparator<Path> ComparatorReverseLastModificationTime() {
        return new Comparator<Path>() {

            @Override
            public int compare(Path o1, Path o2) {
                int compareTo = 0;
                try {
                    compareTo = Files.getLastModifiedTime(o1, LinkOption.NOFOLLOW_LINKS).compareTo(Files.getLastModifiedTime(o2, LinkOption.NOFOLLOW_LINKS));
                } catch (IOException ex) {
                    // proper exception handling must go here
                    ex.printStackTrace(System.err);
                }
                return -compareTo;
            }
        };
    }
}
公共类LastModifiedDir{
公共静态void main(字符串[]args){
最终字符串filesLocation=“…要检查的目录…”;
Path Path=Path.get(filesLocation);
List dirs=new ArrayList();
try(DirectoryStream dirStream=Files.newDirectoryStream(path)){
for(路径条目:dirStream){
if(Files.isDirectory(条目,LinkOption.NOFOLLOW_LINKS)){
直接添加(条目);
}
}
排序(dirs、ComparatorReverseLastModificationTime());
System.out.println(“最近更改的目录:+dirs.get(0));
}捕获(IOE异常){
//在此处添加异常处理
e、 printStackTrace(System.err);
}
}
静态比较器比较器VerseLastModificationTime(){
返回新的比较器(){
@凌驾
公共整数比较(路径o1,路径o2){
int compareTo=0;
试一试{
compareTo=Files.getLastModifiedTime(o1,LinkOption.NOFOLLOW_LINKS)。compareTo(Files.getLastModifiedTime(o2,LinkOption.NOFOLLOW_LINKS));
}捕获(IOEX异常){
//正确的异常处理必须在这里进行
例如printStackTrace(System.err);
}
返回-比较;
}
};
}
}

你能把你尝试过的代码和你面临的问题写出来吗?我已经成功地用这个方法获得了上次修改目录的时间:
public static void getLastModifiedDir(){
`File File File=new File(“文件路径”);`System.out.println(“last modified:+`new Date(file.lastModified());`
//下面的代码仅适用于文件,而不适用于文件夹
`file[]files=file.listFiles();``if(files.length==0){`}
}
堆栈溢出用于询问有关特定编程问题的特定问题。这不是一个错误“gimmeh teh codez”网站。问题旨在展示您尝试过的内容,并解释其不起作用的原因(其结果与您的预期结果有何不同)。此问题只是对您预期目标的解释,但此处没有代码。您遇到的实际问题是什么?请编辑您的问题以提高其质量。