我使用Unhandled Rejection (TypeError): Cannot read property 'fetchSeance' of undefined
从给定的目录结构中递归获取文件列表。
我尝试使用以下代码来实现此目的,但是它们都不起作用。
directory.listFiles()
文件应从所有子目录中升序列出。
答案 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);