`
cucaracha
  • 浏览: 141402 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:87897
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36701
社区版块
存档分类
最新评论

[NIO.2] 第三十一篇 FileVisitor 接口

阅读更多
FileVisitor 接口提供了递归遍历文件树的支持。这个接口上的方法表示了遍历过程中的关键过程,允许你在文件被访问、目录将被访问、目录已被访问、发生错误等等过程上进行控制;换句话说,这个接口在文件被访问前、访问中和访问后,以及产生错误的时候都有相应的钩子程序进行处理。

调用 FileVisitor 中的方法,会返回访问结果 FileVisitResult 对象值,用于决定当前操作完成后接下来该如何处理。FileVisitResult 的标准返回值存放到 FileVisitResult 枚举类型中:

  •     FileVisitResult.CONTINUE:这个访问结果表示当前的遍历过程将会继续。
  •     FileVisitResult.SKIP_SIBLINGS:这个访问结果表示当前的遍历过程将会继续,但是要忽略当前文件/目录的兄弟节点。
  •     FileVisitResult.SKIP_SUBTREE:这个访问结果表示当前的遍历过程将会继续,但是要忽略当前目录下的所有节点。
  •     FileVisitResult.TERMINATE:这个访问结果表示当前的遍历过程将会停止。


上面的所有枚举值可以通过下面的代码进行遍历:
for (FileVisitResult constant : FileVisitResult.values()) 
    System.out.println(constant);


接下来介绍 FileVisitor 接口上的方法。

FileVisitor.visitFile() 方法

visitFile() 将会在访问目录中的文件的时候被调用。这个方法通常返回 CONTINUE 和 TERMINATE 结果。例如,当你在搜索某个文件的时候,你需要一直返回 CONTINUE  直到文件被找到或已经搜索完所有的文件,一旦文件被找到,就返回 TERMINATE。

当这个方法被调用的时候,它接受文件引用和文件基本属性两个参数。一旦发生 I/O 错误,将会抛出  IOException 异常。下面是这个方法的签名:

FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException


FileVisitor.preVisitDirectory() 方法


preVisitDirectory() 在访问目录中的节点之前被调用。如果返回 CONTINUE 那么将会继续访问,如果返回 SKIP_SUBTREE(只有在这个方法中返回这个值才有意义),那么将会掉过当前目录继续访问。也可以返回  SKIP_SIBLINGS 跳过访问当前目录的所有兄弟节点。

当这个方法被调用,它将接受目录引用和目录基本属性两个参数。方法签名为:

FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException


postVisitDirectory() 方法

postVisitDirectory() 将会在目录中所有节点(包括所有子节点)都被访问或访问过程立即停止(可能是发生 I/O 异常,也可能是在在程序中强制停止)的时候被调用。

当这个方法被调用的时候,它接受文件引用和 IOException 两个参数。如果没有异常产生,那么 IOException 的值将会是 null。这个方法的方法签名是:

FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException


FileVisitor.visitFileFailed() 方法

visitFileFailed() 方法将会在不能访问文件的时候被调用。不能访问文件的原因可能是没有访问权限或是目录不能打开。这个方法被调用时接受访问文件的引用和访问文件时产生的 IOException 两个参数。这个方法的方法签名如下:

FileVisitResult visitFileFailed(T file, IOException exc) throws IOException


文章来源:http://www.aptusource.org/2014/04/nio-2-filevisitor-interface/
1
0
分享到:
评论

相关推荐

    Java IO, NIO and NIO.2(Apress,2015)

    Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...

    java NIO.zip

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...

    Java IO, NIO and NIO.2 原版pdf by Friesen

    New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...

    Java IO, NIO and NIO.2

    Java IO、NIO以及NIO.2是Java中用于处理输入/输出操作的三种主要机制。本书《Java IO, NIO and NIO.2》旨在深入浅出地介绍这些机制,同时书中内容均为英文。接下来将详细介绍这些知识点。 **Java IO** Java IO是...

    NIO.2 入门,第 2 部分: 文件系统 API

    本篇我们将深入探讨NIO.2中的几个关键概念和类,包括`Files`, `Path`, `FileAttributes`, `DirectoryWatcher`以及`FileVisitor`。这些组件极大地增强了Java对操作系统文件系统的访问能力。 首先,`Path`接口是NIO.2...

    Pro Java 7 NIO.2.pdf

    这本书通过一系列章节详细讲解了如何使用NIO.2中的各种类和接口来执行复杂的文件操作。 ### 1. Path 类简介 本书推荐的起点是`java.nio.file.Path`类,这是一个抽象类,是NIO.2的一个里程碑。任何涉及I/O操作的...

    java nio.pdf

    java nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava ...

    Java I/O, NIO and NIO.2

    总的来说,Java I/O、NIO和NIO.2是Java平台中处理输入输出的三个重要阶段,它们各自有其特点和适用范围。学习和运用这些技术,能够帮助开发者更好地处理数据交互,提高程序的性能和可扩展性。通过阅读《Java I:O, ...

    Java NIO 中英文版 + Pro Java 7 NIO.2

    `Pro Java 7 NIO.2`这本书由Anghel Leonard著,深入探讨了Java NIO.2 API,这是Java 7引入的进一步扩展,包括: 1. **文件系统API增强**:新增了AsynchronousFileChannel,支持异步文件操作,可以在后台线程中执行...

    Pro Java 7 NIO.2

    This book covers all the important aspects involved in developing NIO.2-based applications. It provides clear instructions for getting the most out of NIO.2 and offers many exercises and case studies ...

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    Java NIO提供了FileLock接口来实现这一功能。你可以通过FileChannel的lock()和tryLock()方法获取文件锁。锁可以是独占的(不允许其他线程或进程同时写入),也可以是非独占的(允许读取,但不允许写入)。文件锁的...

    Java NIO.pdf

    Java NIO.pdf nio教程 Java NIO.pdf nio教程 java nio

    nio.zip_NIO_NewIO_NIO.c_java NIO chm_java nio

    NIO(New IO)是Java平台中用于处理输入/输出操作的一种高级API,它在Java 1.4版本中引入,以替代传统的IO流模型。NIO提供了更高效、更灵活的数据传输方式,尤其适用于高并发和大数据量的场景。 在Java的NIO体系中...

    优雅的操作文件:java.nio.file 库介绍.pdf

    【java.nio.file库详解】 Java 早期版本的文件I/O操作功能相对有限,存在几个显著问题:不支持现代文件系统特性、API设计复杂且冗长、处理大文件和并发性能不足。为了解决这些问题,Java引入了`java.nio.file`库,...

    蔚来-NIO.US-新车上市,蔚来可期.pdf

    蔚来(NIO.US)新车上市,蔚来可期 蔚来(NIO.US)是一家中国的新能源汽车制造商,专注于生产高性能的电动汽车。 公司的目标是成为中国最大的新能源汽车品牌,并且跻身全球汽车行业的前列。 蔚来2025年目标价45.5...

    ProJava7NIO.2PDFBooks.pdf 英文原版

    Pro Java 7 NIO.2 – PDF Books

Global site tag (gtag.js) - Google Analytics