为了账号安全,请及时绑定邮箱和手机立即绑定

使用Java递归列出目录中的所有文件

使用Java递归列出目录中的所有文件

摇曳的蔷薇 2019-12-12 14:09:55
我有此功能,以递归方式打印目录中所有文件的名称。问题是我的代码很慢,因为它每次迭代都必须访问远程网络设备。我的计划是先从目录中递归加载所有文件,然后再使用正则表达式遍历所有文件,以过滤掉我不需要的所有文件。有谁有更好的建议?public static printFnames(String sDir){  File[] faFiles = new File(sDir).listFiles();  for(File file: faFiles){    if(file.getName().matches("^(.*?)")){      System.out.println(file.getAbsolutePath());    }    if(file.isDirectory()){      printFnames(file.getAbsolutePath());    }  }}这只是以后的测试,我将不使用这样的代码,而是将与高级正则表达式匹配的每个文件的路径和修改日期添加到数组中。
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

在Java 8,它是通过1衬垫Files.find()与一个任意大的深度(例如999)和BasicFileAttributes的isRegularFile()


public static printFnames(String sDir) {

    Files.find(Paths.get(sDir), 999, (p, bfa) -> bfa.isRegularFile()).forEach(System.out::println);

}

要添加更多过滤条件,请增强lambda,例如最近24小时内修改的所有jpg文件:


(p, bfa) -> bfa.isRegularFile()

  && p.getFileName().toString().matches(".*\\.jpg")

  && bfa.lastModifiedTime().toMillis() > System.currentMillis() - 86400000



查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 379 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信