列出名称中包含6位数字的文件夹



我正试图列出只有名称和6位数字的文件夹,

File[] directories = new File("F:\war").listFiles(File::isDirectory);
for(File getDirectory : directories) { 
Path folder = Paths.get(getDirectory.getAbsolutePath());
BasicFileAttributes attr =
Files.readAttributes(folder, BasicFileAttributes.class);
}

的例子:

C:\war\NewOne
C:\war\032678
C:\war\908
输出:

C:\war\032678

我怎样才能做到这一点?

在listFiles方法中使用正则表达式匹配添加另一个条件:

File[] directories = new File("F:\war")
.listFiles(file -> file.isDirectory() && 
file.getName().matches("[0-9]{6}"));

可以这样使用filter:

String pattern = "\d{6}";
Pattern p = Pattern.compile(pattern);
List<File> files = Arrays.stream(new File("F:\war").listFiles(File::isDirectory))
.filter(file -> p.asMatchPredicate().test(file.getName()))
.collect(Collectors.toList());

您可以使用regex".*((?<=\\)\d{6})$"查找名称中有数字和6位数字的文件夹:

Matcher matcher = Pattern.compile(".*((?<=\\)\d{6})$").matcher(getDirectory.getAbsolutePath());
if (matcher.matches()) {
System.out.println(matcher.group());
}

关于正则表达式:

  • .*:.任意字符,*0次及以上
  • (?<=\\):正向后看,匹配\
  • 后面的字符串
  • \d{6}:匹配6位
  • $:输入结束

相关内容

  • 没有找到相关文章

最新更新