在 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