Java如何按文件扩展名对文件名进行排序?
要按扩展名对文件名进行排序,我们可以使用ExtensionFileComparatorApacheCommonsIO库中的类。此类提供了一些比较器实例,例如:
以下代码段显示了如何使用上面列出的前两个比较器。
package org.nhooo.example.commons.io;
import org.apache.commons.io.FilenameUtils;
import static org.apache.commons.io.comparator.ExtensionFileComparator.*;
import java.io.File;
import java.util.Arrays;
public class FileSortByExtension {
public static void main(String[] args) {
File file = new File(".");
//排除列表中的目录
File[] files = file.listFiles(File::isFile);
if (files != null) {
//升序排列。
Arrays.sort(files, EXTENSION_COMPARATOR);
FileSortByExtension.displayFileOrder(files);
//降序排列。
Arrays.sort(files, EXTENSION_REVERSE);
FileSortByExtension.displayFileOrder(files);
}
}
private static void displayFileOrder(File[] files) {
System.out.printf("%-20s | %s%n", "Name", "Ext");
System.out.println("--------------------------------");
for (File file : files) {
System.out.printf("%-20s | %s%n", file.getName(),
FilenameUtils.getExtension(file.getName()));
}
System.out.println();
}
}代码段的结果:
Name | Ext -------------------------------- README | lipsum.doc | doc lipsum.docx | docx data.html | html contributors.txt | txt pom.xml | xml Name | Ext -------------------------------- pom.xml | xml contributors.txt | txt data.html | html lipsum.docx | docx lipsum.doc | doc README |
Maven依赖
<!-- http://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>