如何在java中对目录中的文件进行排序?

如何在java中对目录中的文件进行排序?,java,file,sorting,Java,File,Sorting,这是我的代码,它的工作!但我想能够排序的文件列表根据名称,大小,修改日期等 import java.io.File; import org.apache.commons.io.FileUtils; public class StartingPoint { public static void main(String[] args) { File file = new File( "/home/t/lectures"); F

这是我的代码,它的工作!但我想能够排序的文件列表根据名称,大小,修改日期等

import java.io.File;
import org.apache.commons.io.FileUtils;

public class StartingPoint {
    public static void main(String[] args) {
        File file = new File(
                "/home/t/lectures");
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println("File : " + f.getName() + " ["
                    + FileUtils.byteCountToDisplaySize(f.length()) + "]");
        }
    }
}
然后你就可以把它们换掉:

Arrays.sort( files, new FileNameComparator() );


Java8中按上次修改时间排序的示例:

Path dir = Paths.get("./path/somewhere");

Stream<Path> sortedList = Files.list(dir)
    .filter(f -> Files.isDirectory(f) == false) // exclude directories
    .sorted((f1, f2) -> (int) (f1.toFile().lastModified() - f2.toFile().lastModified()));

@SergeyGazaryan,我不是那样读的,但我会修改我的答案,将其包括在内。谢谢。太好了,除了这一步之外,实现不同类型的排序也很容易。谢谢
Arrays.sort( files, new FileNameComparator() );
Arrays.sort( files, new FileSizeComparator() );
Path dir = Paths.get("./path/somewhere");

Stream<Path> sortedList = Files.list(dir)
    .filter(f -> Files.isDirectory(f) == false) // exclude directories
    .sorted((f1, f2) -> (int) (f1.toFile().lastModified() - f2.toFile().lastModified()));
    .forEach(f -> {do something with f (f is Path)})