我使用以下lambda表达式迭代PDF文件.
public static void run(String arg) {
Path rootDir = Paths.get(arg);
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**.pdf");
Files.walk(rootDir)
.filter(matcher::matches)
.forEach(Start::modify);
}
private static void modify(Path p) {
System.out.println(p.toString());
}
Run Code Online (Sandbox Code Playgroud)
这部分.forEach(Start::modify);从lambda表达式所在的同一个类执行static方法修改.else当没有找到PDF文件时,是否有可能添加类似子句的内容?
或者你可以做一件显而易见的事情,即首先收集流.
List<File> files = Files.walk(rootDir)
.filter(matcher::matches)
.collect(toList());
if (files.isEmpty())
doSomethingForEmpty();
else
files.forEach(Start::modify);
Run Code Online (Sandbox Code Playgroud)
您可以将操作后的结果收集filter到列表实例中,然后在对其进行操作之前检查大小。
List<Path> resultSet = Files.walk(rootDir)
.filter(matcher::matches)
.collect(Collectors.toList());
if(resultSet.size() > 0){
resultSet.forEach(Start::modify);
}else {
// do something else
}
Run Code Online (Sandbox Code Playgroud)
或者,你可以这样做:
if(Files.walk(rootDir).anyMatch(matcher::matches)) {
Files.walk(rootDir)
.filter(matcher::matches)
.forEach(Start::modify);
}else {
// do something else
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |