java7 NIO2使用walk递归接口递归操作文件,可以使用这个接口进行文件搜索,文件内容搜索,递归拷贝,递归移动,递归删除等操作。
package com.mime;
import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.util.EnumSet;
public class NIO2FileWalk {
/**
* @param args
*/
public static void main(String[] args) {
Path listDir = Paths.get("/tmp"); // define the starting file
//
ListTree walk = new ListTree();
try {
Files.walkFileTree(listDir, walk);
} catch (IOException e) {
System.err.println(e);
}
//遍历的时候跟踪链接
EnumSet opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
try {
Files.walkFileTree(listDir, opts, Integer.MAX_VALUE, walk);
} catch (IOException e) {
System.err.println(e);
}
//FileVisitor 提供perform a file search, a recursive copy, arecursive move, and a recursive delete.
}
}
// NIO2 递归遍历文件目录的接口实现
class ListTree extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
System.out.println("Visited directory: " + dir.toString());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
System.out.println(exc);
return FileVisitResult.CONTINUE;
}
}
输出:
Visited directory: /tmp/.ICE-unix
Visited directory: /tmp/gpg-LOz0cL
Visited directory: /tmp/.org.chromium.Chromium.YKWsQJ
Visited directory: /tmp/hsperfdata_weijianzhongwj
Visited directory: /tmp/kde-weijianzhongwj
java.nio.file.AccessDeniedException: /tmp/pulse-qKcxuRTsGUob
Visited directory: /tmp/ksocket-weijianzhongwj
Visited directory: /tmp/nio_5078970948266789689
Visited directory: /tmp/pulse-j0jluTvI3Pe6
Visited directory: /tmp/3892364837850046417
Visited directory: /tmp/sni-qt_kaccessibleapp_2026-mEz8Dy/icons/hicolor/22x22/apps
Visited directory: /tmp/sni-qt_kaccessibleapp_2026-mEz8Dy/icons/hicolor/22x22
Visited directory: /tmp/sni-qt_kaccessibleapp_2026-mEz8Dy/icons/hicolor
Visited directory: /tmp/sni-qt_kaccessibleapp_2026-mEz8Dy/icons
Visited directory: /tmp/sni-qt_kaccessibleapp_2026-mEz8Dy
Visited directory: /tmp/.X11-unix
Visited directory: /tmp/akonadi-weijianzhongwj.mjmToI
Visited directory: /tmp/ssh-mfuayNh73d7Q
Visited directory: /tmp/aaa/bbb/ccc
Visited directory: /tmp/aaa/bbb
Visited directory: /tmp/aaa
java.nio.file.AccessDeniedException: /tmp/pulse-PKdhtXMmr18n
Visited directory: /tmp
分享到:
相关推荐
本书的核心在于介绍`java.nio.file.Path`类,它是NIO.2 API的一个关键组件,为文件和目录的操作提供了强大的支持。通过学习这本书,读者可以深入了解如何在Java应用程序中高效地进行文件I/O操作。 #### 二、Path类...
### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。
### Java-NIO2教程知识点详解 #### I/O发展简史 - **JDK1.0-1.3**: 在此期间,Java的I/O模型主要依赖于...这只是Java NIO2中众多强大功能之一,通过这些新的API,开发人员可以更高效、简洁地处理文件系统相关的操作。
`Pro Java 7 NIO.2`这本书由Anghel Leonard著,深入探讨了Java NIO.2 API,这是Java 7引入的进一步扩展,包括: 1. **文件系统API增强**:新增了AsynchronousFileChannel,支持异步文件操作,可以在后台线程中执行...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于标准Java IO API的处理I/O操作的方式。NIO的主要特点是面向缓冲区,非阻塞I/O,以及选择器,这些特性使得NIO在处理大量并发连接时表现出更高...
在Java中,可以使用java.nio.file包下的Files和Paths类来列出目录中的文件和子目录,获取文件的基本信息,如大小、修改时间等。 在实际开发中,我们还需要考虑错误处理、安全性(如权限控制)、性能优化(如批量...
《Pro Java 7 NIO》详细讲述了如何利用异步I/O API来开发异步socket应用程序,也包括了如何利用Java NIO.2中的FileVisitor API来开发递归文件操作,以及如何使用WatchService API和文件改变通知机制来监控文件系统的...
根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种新的方式来处理I/O操作,相比传统...通过理解其核心组件和操作机制,开发者可以充分利用NIO来优化文件读写性能,尤其是在高并发和大文件处理的场景下。
在Java 7的NIO2(JSR203:Java平台上的更多新I/O API)更新中,`java.nio.file.Path` 类成为了核心组件之一,为开发者提供了更高效、更直观的文件系统操作接口。本文将详细解析 `Path` 类的功能与应用,帮助读者掌握...
根据提供的文件信息,“Pro Java 7 NIO.2.pdf”由Anghel Leonard于2011年编写,主要介绍了Java 7中的新输入/输出(NIO)API,特别是NIO.2(JSR 203)所带来的增强功能。这本书通过一系列章节详细讲解了如何使用NIO.2...
Java IO、NIO以及NIO.2是Java中用于处理输入/输出操作的三种主要机制。本书《Java IO, NIO and NIO.2》旨在深入浅出地介绍这些机制,同时书中内容均为英文。接下来将详细介绍这些知识点。 **Java IO** Java IO是...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于传统IO(基于字节流和字符流)的I/O操作方式。传统的IO模型是阻塞式的,而NIO的核心特点是非阻塞,这使得在处理大量并发I/O请求时更为高效。...
NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据量的系统。Netty是一个基于NIO的高性能、异步事件驱动的网络应用框架,它简化了网络编程,广泛应用于服务器端应用开发。 ...
总之,NIO是Java处理大文件的一个强大工具,通过非阻塞I/O、通道、缓冲区和选择器,能够提高文件操作的效率,降低系统资源消耗,特别适合处理大数据量和并发场景。开发者在实际项目中可以根据需求选择合适的I/O模型...