- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java 文件树
Java ⽂件树
Java IO教程 - Java⽂件树
FileVisitor API可以递归地处理⽂件树中的所有⽂件和⽬录。
当我们要对⽂件树中的所有或某些⽂件或⽬录执⾏某些操作时 FileVisitor API⾮常有
⽤。
SimpleFileVisitor类是FileVisitor接⼜的基本实现。
当访问⽂件/ ⽬录时 SimpleFileVisitor类不执⾏任何操作。我们可以从
SimpleFileVisitor类继承我们的⽂件访问类 并且只覆盖适合我们需要的⽅法。
FileVisitor接⼜的⽅法:
ID 含义
1 FileVisitResult preVisitDirectory (T dir BasicFileAttributes attrs ) 在访问⽬录中的
条⽬之前调⽤⼀次。
FileVisitResult postVisitDirectory (T dir IOE ception e c ) 已访问⽬录中的后调
2 ⽤项。如果在⽬录的迭代期间抛出了任何异常 则将异常对象作为第⼆个参数传
递给此⽅法。如果此⽅法的第⼆个参数为null 则在⽬录迭代期间没有异常。
3 FileVisitResult visitFile (T⽂件 BasicFileAttributes attrs ) 当访问⽬录中的⽂件时
调⽤。
4 FileVisitResult visitFileFailed (T⽂件 IOE ception e c ) 当由于任何原因⽽⽆法
访问⽂件或⽬录时调⽤。
下表列出了FileVisitResult的枚举常量及其说明
枚举常量 描述
CONTINUE 继续处理
SKIP_SIBLINGS 继续处理⽽不访问⽂件或⽬录的兄弟节点。
SKIP_SUBTREE 继续处理 ⽽不访问⽬录中的条⽬。
TERMINATE 终⽌⽂件访问过程。
我们不需要在我们的⽂件访问类的所有四个⽅法中编写逻辑。要复制⽬录 请使⽤
preVisitDirectory()⽅法来创建⼀个新⽬录和visitFile()⽅法来复制⽂件。
以下代码显⽰如何打印⽬录的⼦⽬录和⽂件的名称。
import static java.nio.file.FileVisitResult.CONTINUE;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Pat ;
import java.nio.file.Pat s;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class Main {
public static void main(String[] args) {
Pat startDir = Pat s.get();
FileVisitorPat visitor = getFileVisitor();
try {
Files.walkFileTree(startDir, visitor);
} catc (IOException e) {
e.printStackTrace();
}
}
public static FileVisitorPat getFileVisitor() {
class DirVisitorPat extends SimpleFileVisitorPat {
@Override
public FileVisitResult preVisitDirectory(Pat dir,
BasicFileAttributes attrs) {
System.out.format(%s [Directory]%n, dir);
return CONTIN
文档评论(0)