当前位置:网站首页>Files遍历子文件、遍历目录树方法
Files遍历子文件、遍历目录树方法
2022-08-06 05:24:00 【半世晨晓1128】
1.遍历子文件
package Java10;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.function.Consumer;
import java.util.stream.Stream;
//遍历子文件
public class Test02 {
public static void main(String[] args) throws IOException {
//Files.list(p8):遍历子文件(path是目录)
Path p = Paths.get("D:\\java\\test1\\src");
Stream<Path> s = Files.list(p);
//匿名内部类
s.forEach(new Consumer<Path>() {
@Override
public void accept(Path path) {
System.out.println(path);
}
});
//Files.list(p):遍历子文件(path是目录)
Path p1 = Paths.get("D:\\java\\test1\\src");
Stream<Path> s1 = Files.list(p1);
//lambad表达式
s1.forEach(path -> System.out.println(path));
//Files.list(p):遍历子文件(path是目录),根据条件进行遍历
Path p2 = Paths.get("D:\\java\\test1\\src");
Stream<Path> s2 = Files.list(p2);
s2.forEach(path -> {
if (path.toString().endsWith(".java")) {
System.out.println(path);
}
});
//Files.newDirectoryStream(p10):遍历子文件
Path p4 = Paths.get("D:\\java\\test1\\src");
DirectoryStream<Path> d1 = Files.newDirectoryStream(p4);
//lambad表达式
d1.forEach(path -> System.out.println(path));
//Files.newDirectoryStream(p10):遍历子文件,根据条件进行遍历子文件
Path p3 = Paths.get("D:\\java\\test1\\src");
//匿名内部类
DirectoryStream<Path> d = Files.newDirectoryStream(p3, new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path path) throws IOException {
return path.toString().endsWith(".java");
}
});
d.forEach(path -> System.out.println(path));
//Files.newDirectoryStream:遍历子文件,根据条件遍历子文件
Path p5 = Paths.get("D:\\java\\test1\\src");
//lambad表达式
DirectoryStream<Path> d2 = Files.newDirectoryStream(p5, path -> path.toString().endsWith("java"));
d2.forEach(path -> System.out.println(path));
//Files.newDirectoryStream:遍历子文件,根据条件遍历子文件
Path p6 = Paths.get("D:\\java\\test1\\src");
Files.newDirectoryStream(p6, path -> path.toString().endsWith("java")).forEach(path -> System.out.println(path));
}
}
2.遍历目录树
package Java10;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.stream.Stream;
//遍历目录树
public class Test03 {
public static void main(String[] args) throws IOException {
//Files.walk(p):遍历目录树
Path p = Paths.get("D:\\java\\test1\\src");
Stream<Path> s = Files.walk(p);
s.forEach(path -> System.out.println(path));
//根据条件遍历目录树
Path p1 = Paths.get("D:\\java\\test1\\src");
Stream<Path> s1 = Files.walk(p1);
s1.forEach(path -> {
if (path.toString().endsWith("java")) {
System.out.println(path);
}
});
//Files.find():根据条件查找对应的文件
Path p2 = Paths.get("D:\\java\\test1\\src");
//lambad表达式
Stream<Path> s2 = Files.find(p2, 3, (x, y) -> x.toString().endsWith("java"));
s2.forEach(path -> System.out.println(path));
//Files.walkFileTree
Path p3 = Paths.get("D:\\java\\test1\\src");
Files.walkFileTree(p3, new FileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("访问目录前" + dir);
//CONTINUE:继续,SKIP_SUBTREE:不访问此目录
if (dir.toString().endsWith("Java1234")) {
return FileVisitResult.SKIP_SUBTREE;
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("访问文件" + file);
if (file.toString().endsWith("Test03.java")) {
//TERMINATE:终止
//return FileVisitResult.TERMINATE;
//跳过兄弟
return FileVisitResult.SKIP_SIBLINGS;
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
System.out.println("访问文件失败" + file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
System.out.println("访问目录后" + dir);
return FileVisitResult.CONTINUE;
}
});
}
}
边栏推荐
猜你喜欢
随机推荐
FortiGate NGFW打造安全、高效、智能的边界安全枢纽
类和对象随手记
二叉搜索树BST
玩转shell循环必看教程
list分页(逻辑分页)
教你怎样用三剑客玩转正则表达式
单例模式,工厂模式,计算器
Linux-DB2报错:SQL10007N Message “-10003“ could not be retrieved. Reason code: “3“
学好免交互expect解放双手
线程同步方法
五分钟看懂shell重定向和变量
openstack报错 AMQPLAIN
Sprinig Boot + Redis 实现接口幂等性,写得太好了
集合应用,展示学生信息
分布式,微服务,集群概念和区别
学好iptables防火墙拒绝信息泄露
shell脚本编写(4.函数调用)
3.2 定位shellcode
动态规划之乘积最大子数组
ARM64异常之异常入口和异常返回









