相关疑难解决方法(0)

在Java中列出文件的最佳方法,按修改日期排序?

我想获取目录中的文件列表,但我想对其进行排序,使得最旧的文件是第一个.我的解决方案是调用File.listFiles,然后根据File.lastModified求助于列表,但我想知道是否有更好的方法.

编辑:我建议的当前解决方案是使用匿名比较器:

File[] files = directory.listFiles();

Arrays.sort(files, new Comparator<File>(){
    public int compare(File f1, File f2)
    {
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
    } });
Run Code Online (Sandbox Code Playgroud)

java sorting file

234
推荐指数
8
解决办法
19万
查看次数

Java中的File.exists有多贵

我想知道它是如何File.exists()工作的.我不太清楚文件系统是如何工作的,所以我应该先开始阅读.

但是要获得快速的预先信息:

File.exists()如果在某个日志中注册了该路径和文件名,是对文件系统的单个操作的调用吗?或者操作系统是否获取目录的内容,然后通过它扫描匹配?

我认为这将取决于文件系统,但也许所有文件系统都使用快速方法?

我不是在谈论网络和磁带系统.让它保持ntfs,extX,zfs,jfs :-)

java filesystems directory file-io operating-system

32
推荐指数
3
解决办法
1万
查看次数

Java Arrays.sort()需要很长时间

我正在使用Java的Arrays.sort()函数按照上次修改时间对文件列表进行排序.245个文件的排序大约需要5秒钟.这对我来说似乎太长了.我觉得它不应该超过0.5秒.这是一个很好的假设吗?我究竟做错了什么?或者这听起来正常吗?

public static class LastModifiedComparator implements Comparator<File> {
    @Override
    public int compare(File f1, File f2) {
        return (int)(f1.lastModified() - f2.lastModified());
    }       
}

File folder = new File( "C:\\Whatever\\" );
File[] filesInFolder = folder.listFiles();
logger.debug("Starting File Sort");
Arrays.sort(filesInFolder, new LastModifiedComparator());
logger.debug("Done File Sort");
Run Code Online (Sandbox Code Playgroud)

日志输出

2012-08-10 14:24:20,333 DEBUG http-8080-4 <ClassName>:73 - Starting File Sort
2012-08-10 14:24:25,915 DEBUG http-8080-4 <ClassName>:75 - Done File Sort
Run Code Online (Sandbox Code Playgroud)

java sorting

15
推荐指数
2
解决办法
4247
查看次数