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的方式时,需要使用flatMapFile[]转换为Stream<File>,然后使用forEach来添加到result列表中

使用stream的foreach在Java里完成以下操作:给定File filesfiles一定全是文件夹判断这个files文件夹里面是否有文件datadat如果有将该文件加入到ArrayListFile result

原文地址: https://www.cveoy.top/t/topic/iJB9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录