Java IO & NIO - Files.walk() 示例

本文介绍如何使用Java中的Files.walk方法来遍历指定路径下的所有子目录及文件。此方法提供了一种简便的方式来进行文件系统的遍历,并可以通过设置最大深度和遍历选项来自定义遍历行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法:

public static Stream<Path> walk(Path start,
                                FileVisitOption... options)
                         throws IOException
public static Stream<Path> walk(Path start,
                                int maxDepth,
                                FileVisitOption... options)
                         throws IOException

通过遍历以Path 给定起始文件为根的文件树,返回 延迟填充的Stream  。

参数:

start - 起始文件

maxDepth - 要访问的最大目录级别数

options - 配置遍历的选项

返回:

 java.util.stream.Stream,java.nio.file.PathStream 

例子

import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class WalkExample {

	public static void main(String... args) throws IOException {
		Path start = Paths.get("d:\\usr");
		Stream<Path> stream = Files.walk(start, 3, FileVisitOption.FOLLOW_LINKS);
		stream.limit(9999).forEach(System.out::println);
	}
}

输出

d:\usr
d:\usr\bin
d:\usr\bin\encode_keychange.exe
d:\usr\bin\mib2c
d:\usr\bin\mib2c.bat
d:\usr\bin\Microsoft.VC90.CRT.manifest
d:\usr\bin\msvcm90.dll
d:\usr\bin\msvcp90.dll
d:\usr\bin\msvcr90.dll
d:\usr\bin\net-snmp-perl-test.pl
d:\usr\bin\netsnmp.dll
d:\usr\bin\snmpbulkget.exe
d:\usr\bin\snmpbulkwalk.exe
d:\usr\bin\snmpconf
d:\usr\bin\snmpconf.bat
d:\usr\bin\snmpd.exe
d:\usr\bin\snmpdelta.exe
d:\usr\bin\snmpdf.exe
d:\usr\bin\snmpget.exe
d:\usr\bin\snmpgetnext.exe
d:\usr\bin\snmpnetstat.exe
d:\usr\bin\snmpset.exe
d:\usr\bin\snmpstatus.exe
d:\usr\bin\snmptable.exe
d:\usr\bin\snmptest.exe
d:\usr\bin\snmptranslate.exe
d:\usr\bin\snmptrap.exe
d:\usr\bin\snmptrapd.exe
d:\usr\bin\snmpusm.exe
d:\usr\bin\snmpvacm.exe
d:\usr\bin\snmpwalk.exe
d:\usr\bin\traptoemail
d:\usr\bin\traptoemail.bat
d:\usr\docs
d:\usr\docs\COPYING
d:\usr\docs\Net-SNMP.chm
d:\usr\etc
d:\usr\etc\snmp
d:\usr\etc\snmp\snmp.conf
d:\usr\include
d:\usr\include\net-snmp
d:\usr\include\net-snmp\agent
d:\usr\include\net-snmp\net-snmp-config.h
d:\usr\log
d:\usr\perl
d:\usr\perl\NetSNMP.ppd
d:\usr\perl\x86
d:\usr\perl\x86\NetSNMP.tar.gz
d:\usr\README.txt
d:\usr\registeragent.bat
d:\usr\registertrapd.bat
d:\usr\share
d:\usr\share\snmp
d:\usr\share\snmp\mib2c-data
d:\usr\share\snmp\mib2c.access_functions.conf
d:\usr\share\snmp\mib2c.array-user.conf
d:\usr\share\snmp\mib2c.check_values.conf
d:\usr\share\snmp\mib2c.check_values_local.conf
d:\usr\share\snmp\mib2c.column_defines.conf
d:\usr\share\snmp\mib2c.column_enums.conf
d:\usr\share\snmp\mib2c.column_storage.conf
d:\usr\share\snmp\mib2c.container.conf
d:\usr\share\snmp\mib2c.create-dataset.conf
d:\usr\share\snmp\mib2c.emulation.conf
d:\usr\share\snmp\mib2c.genhtml.conf
d:\usr\share\snmp\mib2c.int_watch.conf
d:\usr\share\snmp\mib2c.iterate.conf
d:\usr\share\snmp\mib2c.iterate_access.conf
d:\usr\share\snmp\mib2c.mfd.conf
d:\usr\share\snmp\mib2c.notify.conf
d:\usr\share\snmp\mib2c.old-api.conf
d:\usr\share\snmp\mib2c.perl.conf
d:\usr\share\snmp\mib2c.raw-table.conf
d:\usr\share\snmp\mib2c.row.conf
d:\usr\share\snmp\mib2c.scalar.conf
d:\usr\share\snmp\mib2c.table_data.conf
d:\usr\share\snmp\mibs
d:\usr\share\snmp\snmpconf-data
d:\usr\snmp
d:\usr\snmp\persist
d:\usr\snmp\persist\mib_indexes
d:\usr\temp
d:\usr\uninst.exe
d:\usr\unregisteragent.bat
d:\usr\unregistertrapd.bat
d:\usr\新建文,本文档.txt
d:\usr\新建文本文档 (2).txt
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值