JDK 7的文件和目录访问

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8168023 作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8168023
作者:chszs,转载需注明。
作者博客主页:http://blog.csdn.net/chszs


JDK 7进行文件树复制和遍历非常简单。与JDK 6或更早的版本相比,你会发现使用JDK 7的NIO包很简单,所需的代码非常少。

本文用两个例子展示了JDK 7的文件I/O机制,java.nio.file包提供了对文件I/O的支持,可以访问默认的文件系统。这个包非常直观,易于使用。

例子所需的工具:
1. JDK 7
2. Eclipse 4.2

在例子中,我们使用java.nio.file.Files所支持的文件操作。这个类包含了许多静态方法,比如对文件和目录的复制、移动、删除、遍历文件树等。

java.nio.file.Path是java.nio.file包的主要的入口点之一。Path类表示文件系统的路径。

例1:文件复制操作
从源文件复制到目标文件,使用Files.copy方法。我们还需要提供不同的选项——使用java.nio.file.CopyOption来指定怎样复制文件。
CopyOpDemo.java代码如下:
package test;


import java.io.IOException;
import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;


public class CopyOpDemo {
	public static void main(String[] args){
		// 待复制的源文件
		Path srcFile = Paths.get("D:/tmp/test1.htm");
		// 复制后的目标文件
		Path targetFile = Paths.get("D:/destFile.txt");
		// 复制选项定义
		CopyOption[] options = new CopyOption[]{
			StandardCopyOption.REPLACE_EXISTING
		};
		// 复制文件
		try {
			Files.copy(srcFile, targetFile, options);
			System.out.println("复制成功!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

作者:chszs,转载需注明。作者博客主页:http://blog.csdn.net/chszs

例2:遍历文件树
要遍历文件树,使用Files.walkFileTree方法。此方法需要指定根路径或起始路径。以及要重写SimpleFileVisitor的实现类的两个方法:preVisitDirectory和visitFile。两个方法定义了在访问目录和文件期间想做的事。这使得我们要打印目录和文件名就非常简单了。
RecursiveFileListDemo.java代码如下:
package test;

import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;


public class RecursiveFileListDemo {
	public static void main(String[] args) throws IOException{
		Path startPath = Paths.get("D:/tmp/s5-blank");
		Files.walkFileTree(startPath, new SimpleFileVisitor<Path>(){
			@Override
			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs){
				System.out.println(">>>>Dir : " + dir);
				return FileVisitResult.CONTINUE;
			}
			
			@Override
			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs){
				System.out.println("File : " + file);
				return FileVisitResult.CONTINUE;
			}
		});
	}
}

文件目录如下图所示:


那么程序执行后,控制台输出如下:
>>>>Dir : D:\tmp\s5-blank
File : D:\tmp\s5-blank\.DS_Store
File : D:\tmp\s5-blank\s5-blank.html
>>>>Dir : D:\tmp\s5-blank\ui
File : D:\tmp\s5-blank\ui\.DS_Store
>>>>Dir : D:\tmp\s5-blank\ui\default
File : D:\tmp\s5-blank\ui\default\.DS_Store
File : D:\tmp\s5-blank\ui\default\blank.gif
File : D:\tmp\s5-blank\ui\default\bodybg.gif
File : D:\tmp\s5-blank\ui\default\framing.css
File : D:\tmp\s5-blank\ui\default\iepngfix.htc
File : D:\tmp\s5-blank\ui\default\opera.css
File : D:\tmp\s5-blank\ui\default\outline.css
File : D:\tmp\s5-blank\ui\default\pretty.css
File : D:\tmp\s5-blank\ui\default\print.css
File : D:\tmp\s5-blank\ui\default\s5-core.css
File : D:\tmp\s5-blank\ui\default\slides.css
File : D:\tmp\s5-blank\ui\default\slides.js




目录
相关文章
|
7月前
|
安全 Java API
JDK 11中的动态类文件常量:探索Java字节码的灵活性与动态性
在JDK 11中,Java语言引入了一个新的特性,允许在运行时动态地修改类文件常量。这一特性为Java开发者提供了更大的灵活性,使他们能够根据需要在运行时更改类文件中的常量值。本文将深入探讨动态类文件常量的工作原理、优点、限制以及在实际项目中的应用。
162 11
|
3月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
76 2
|
3月前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
3月前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
4月前
|
Java 编译器 开发者
JDK8到JDK23版本升级的新特性问题之编写一个简单的module-info.java文件,如何实现
JDK8到JDK23版本升级的新特性问题之编写一个简单的module-info.java文件,如何实现
|
4月前
|
存储 Java
构造String问题之在JDK 9及更高版本中,直接访问String对象的coder和value属性,如何实现
构造String问题之在JDK 9及更高版本中,直接访问String对象的coder和value属性,如何实现
|
5月前
|
Java 应用服务中间件 Linux
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
|
7月前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
2438 1
|
7月前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
88 0
|
7月前
|
Java Linux 数据安全/隐私保护
【Linux】如何修改系统文件并保存(配置jdk1.7环境变量)
【Linux】如何修改系统文件并保存(配置jdk1.7环境变量)
68 0