网友视频评论
回答评论:
arraylist里包含了一个文件夹内部文件和子文件夹 怎么使用steam 可以遍历整个文件夹 最后生成的集合里是所有的文件路径,比如D:/test test文件夹里面有1.mp4, test2,test3的文件夹, test2和test3内部也嵌套了文件夹和文件
其实可以直接使用 List 类的 forEach 方法,遍历每一个文件,对每一个文件调用递归方法遍历其下所有的文件的全文件名就可以了:
public class Demo {
public static void main(String[] args) {
Demo.useStream();
}
public static void useStream() {
String directoryPath = "F:\\test";
File directory = new File(directoryPath);
final ArrayList<String> res = new ArrayList<>();
final File[] files = directory.listFiles();
if (Objects.nonNull(files)) {
// 包含了 test 目录下的所有文件以及子文件夹的 list
final ArrayList<File> dicAllFiles = new ArrayList<>(Arrays.asList(files));
// 直接使用 forEach 方法就可以了,不需要转为流
dicAllFiles
.forEach(file -> traverseAllFiles(file, res));
}
System.out.println(res);
}
public static void traverseAllFiles(File directory, List<String> allFilesName) {
if (directory.isFile()) {
allFilesName.add(directory.getAbsolutePath());
} else {
File[] files = directory.listFiles();
// 检查是否有文件
if (files != null) {
for (File file : files) {
if (file.isFile()) {
allFilesName.add(file.getAbsolutePath());
} else if (file.isDirectory()) {
traverseAllFiles(file, allFilesName);
}
}
}
}
}
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 回答评论:使用流遍历文件 list
发表评论 取消回复