JAVA 7 中遍历文件目录

在 JAVA 7 中增加了一个方法对于遍历文件十分的方便,在这篇文章中我们将讲到怎样遍历文件以及处理访问前和访问后的事件。 FilVisitor 是nio包的一个新的接口,它为我们在遍历文件目录的时候提供了几个处理访问事件的方法。 示例:
package java7test;

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

public class TraverseFiles extends SimpleFileVisitor<Path> {

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        System.out.println("FILE VISETED:" + file.getFileName());
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
        System.out.println("DIRECTORY VISITED: " + dir.toString());
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
        System.out.println("VISITING:"+dir.toString());
        return FileVisitResult.CONTINUE;
    }
	@Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
        System.out.println("COULD NOT VISIT FILE");
        return FileVisitResult.CONTINUE; 
    }
}
在上面的示例中。 visitFile()方法在文件被访问时候调用,注意visitFile()的参数attrs是文件属性 ,可以获得文件的创建或修改日期等文件属性 preVistidirectory() 这个方法在访问文件前调用。注意。如果结果是FileVistiResult。 SKIP_SUBTREE 目录的内容将被访问。 postVistiDirectory() 这个方法在文件被访问后调用,所有的contentets将被访问。 最后 visitFileFailed()方法在文件不能被访问时候调用。 下面一个简单的例子来调用TraverseFiles 类。我们C盘创建以下这样的目录结构:
DirtoWalk | |-NewFolder |-TextDocument1.txt |-TextDocument.txt |-TextDocument(2).txt
为了访问DirtoWalk文件夹的内容。我们需要Files 这个类的walkFileTree 方法; 示例:
package java7test;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Java7test {
    public static void main(String[] args) {
         Path listDir=Paths.get("C://DirToWalk");
       TraverseFiles traverse=new TraverseFiles();
        try {
            Files.walkFileTree(listDir,traverse );
        } catch (IOException ex) {
            Logger.getLogger(Java7test.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
        
}
结果将是:
VISITING:C:\DirToWalk VISITING:C:\DirToWalk\New folder FILE VISETED:New Text Document1.txt VISITED: C:\DirToWalk\New folder FILE VISETED:New Text Document (2).txt FILE VISETED:New Text Document.txt VISITED: C:\DirToWalk

你可能感兴趣的:(java)