如何使用Apache FileUtils按创建日期对目录文件排序?
使用Apache FileUtils按文件创建日期排序PDF文件
可以借助Apache FileUtils获取指定目录下的PDF文件,再通过自定义排序逻辑实现按创建日期排序——FileUtils本身没有内置的按创建日期排序的API,需要手动处理。
补全后的完整代码如下:
public String[] getPDFFiles(String dir) throws IOException { File myDir = new File(dir); // 递归获取目录下所有PDF格式文件 Collection<File> files = FileUtils.listFiles(myDir, new String[] {"pdf", "PDF"}, true); // 将Collection转为List,方便排序操作 List<File> fileList = new ArrayList<>(files); // 按文件创建日期升序排序 fileList.sort((file1, file2) -> { try { // 通过Java NIO API获取文件创建时间 FileTime creationTime1 = Files.getCreationTime(file1.toPath()); FileTime creationTime2 = Files.getCreationTime(file2.toPath()); return creationTime1.compareTo(creationTime2); } catch (IOException e) { // 若获取创建时间失败,改用修改时间作为兜底排序依据 return Long.compare(file1.lastModified(), file2.lastModified()); } }); // 将排序后的文件转为绝对路径数组返回 return fileList.stream().map(File::getAbsolutePath).toArray(String[]::new); }
注意事项
- Java标准库的
File类没有直接提供获取创建日期的方法,需依赖Java 7及以上版本的NIO API(Files.getCreationTime())实现。 - 若需要降序排序,只需将排序逻辑中的
creationTime1.compareTo(creationTime2)改为creationTime2.compareTo(creationTime1)即可。 - 当获取创建时间抛出异常时,代码中用文件的修改时间做了兜底处理,可根据实际需求调整异常逻辑。
内容的提问来源于stack exchange,提问作者Netrom
相关产品推荐
相关产品推荐

