本文用两个例子展示了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(){
- @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