按文件名对文件路径数组进行排序

时间:2019-05-15 13:22:05

标签: java arrays sorting

我使用Unhandled Rejection (TypeError): Cannot read property 'fetchSeance' of undefined 从给定的目录结构中递归获取文件列表。 我尝试使用以下代码来实现此目的,但是它们都不起作用。

directory.listFiles()

文件应从所有子目录中升序列出。

3 个答案:

答案 0 :(得分:4)

File是一个可比较的类,默认情况下,该类按字典顺序对路径名进行排序。只需使用,

 Arrays.sort(fList);

如果要对它们进行不同的排序,则可以定义自己的比较器。

答案 1 :(得分:2)

如果要以树形结构对所有文件路径进行递归排序,可以尝试将Files.walk与Java 8流一起使用sorted

List<String> files = Files.walk(Paths.get("/tmp"))
                         .filter(Files::isRegularFile) // Check you have only file names
                         .map(Path::toString) // map to string
                         .sorted() // sort
                         .collect(Collectors.toList()); // create list

如果要区分大小写:

List<String> files = Files.walk(Paths.get("d:/tmp"))
                         .filter(Files::isRegularFile) // Check you have only file names
                         .map(Path::toString) // map to string
                         .sorted(Comparator.comparing(String::toLowerCase)) // sort case insensitive
                         .collect(Collectors.toList()); // create list

答案 2 :(得分:1)

要列出目录和子目录中的所有文件,请使用Apache Commons FilesUtil.listFiles方法

Collection<File> fCollection = FileUtils.listFiles(directory, null, true);
File[] fList = fCollection.toArray(new File[fCollection.size()]);

然后对您可以使用的数组进行排序

Arrays.sort(fList);