Java 遍历文件夹

1.通过 File 对象的 listFiles() 方法

File[] files=new File("F:\\eclipse-workspace\\PythonTest").listFiles();
for(File file:files) {
    System.out.println(file.getAbsolutePath());
}

2.通过 Files 对象的 newDirectoryStream() 方法产生一个可迭代对象

//try块保证目录流被正确关闭
try(DirectoryStream<Path> paths=Files.newDirectoryStream(Paths.get("F:\\eclipse-workspace\\javaProject\\src\\bank"),"*.java")){
	for(Path path:paths) {
		System.out.println(path.toAbsolutePath());
	}
}

可以运用glob模式来过滤文件 (*.java 只会显示出以 java 为后缀的文件)

方法1在目录中包含大量文件时性能会非常低 ,所以在目录中包含大量文件时尽量使用方法2来遍历文件夹

3.遍历文件夹下子文件以及子文件夹

Files.walkFileTree(Paths.get("F:\\test"),new FileVisitor<Path>() {
    //一个目录被访问前调用 
	@Override
	public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
		System.out.println("访问 "+dir.toAbsolutePath()+" 文件夹前");
		return FileVisitResult.CONTINUE;
	}
	//访问一个文件时调用
	@Override
	public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
		System.out.println("访问 "+file.toAbsolutePath()+" 文件");
		return FileVisitResult.CONTINUE;
	}
	//访问文件遇到错误时调用
	@Override
	public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
		System.out.println("访问 "+file.toAbsolutePath()+" 文件或目录失败");
		return FileVisitResult.CONTINUE;
	}
	//一个目录被访问后调用
	@Override
	public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
		System.out.println("访问 "+dir.toAbsolutePath()+" 文件夹后");
		return FileVisitResult.CONTINUE;
	}
});

方法返回值:

FileVisitResult.CONTINUE                 继续访问下一个文件

FileVisitResult.SKIP_SUBTREE        继续访问,但是不再访问这个目录下的任何项

FileVisitResult.SKIP_SIBLINGS        继续访问,但是不再访问这个文件的兄弟文 ( 和该文件在同一个目录下的文件 )

FileVisitResult.TERMINATE               终止访问

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值