我正试图列出只有名称和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位$
:输入结束