使用stream的foreach在Java里完成以下操作:给定File filesfiles一定全是文件夹判断这个files文件夹里面是否有文件datadat如果有将该文件加入到ArrayListFile result
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
File[] files = new File("path/to/files").listFiles();
List<File> result = new ArrayList<>();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
File[] subFiles = file.listFiles((dir, name) -> name.equals("data.dat"));
if (subFiles != null && subFiles.length > 0) {
result.add(subFiles[0]);
}
}
}
}
result.forEach(System.out::println);
}
}
使用Stream的方式如下:
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
File[] files = new File("path/to/files").listFiles();
List<File> result = new ArrayList<>();
if (files != null) {
Arrays.stream(files)
.filter(File::isDirectory)
.flatMap(file -> Arrays.stream(file.listFiles((dir, name) -> name.equals("data.dat"))))
.forEach(result::add);
}
result.forEach(System.out::println);
}
}
注意,在使用Stream的方式时,需要使用flatMap将File[]转换为Stream<File>,然后使用forEach来添加到result列表中
原文地址: https://www.cveoy.top/t/topic/iJB9 著作权归作者所有。请勿转载和采集!