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

taa*_*eid 3 java sorting file

这是我的代码,它的工作原理!但我希望能够根据名称,大小,修改日期等对文件列表进行排序

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()) + "]");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*cas 12

Arrays.sort( files, new Comparator<File>() {
    public int compare( File a, File b ) {
        // do your comparison here returning -1 if a is before b, 0 if same, 1 if a is after b
    }
} );
Run Code Online (Sandbox Code Playgroud)

您可以定义一堆不同的Comparator类来进行不同的比较,例如:

public class FileNameComparator implements Comparator<File> {
    public int compare( File a, File b ) {
        return a.getName().compareTo( b.getName() );
    }
}

public class FileSizeComparator implements Comparator<File> {
    public int compare( File a, File b ) {
        int aSize = a.getSize();
        int bSize = b.getSize();
        if ( aSize == bSize ) {
            return 0;
        }
        else {
            return Integer.compare(aSize, bSize);
        }
    }
}

...
Run Code Online (Sandbox Code Playgroud)

然后你只需要交换em:

Arrays.sort( files, new FileNameComparator() );
Run Code Online (Sandbox Code Playgroud)

要么

Arrays.sort( files, new FileSizeComparator() );
Run Code Online (Sandbox Code Playgroud)

  • 他需要不同的名称,大小,修改日期...... (2认同)