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在上面的示例中。 visitFile()方法在文件被访问时候调用,注意visitFile()的参数attrs是文件属性 ,可以获得文件的创建或修改日期等文件属性 preVistidirectory() 这个方法在访问文件前调用。注意。如果结果是FileVistiResult。 SKIP_SUBTREE 目录的内容将被访问。 postVistiDirectory() 这个方法在文件被访问后调用,所有的contentets将被访问。 最后 visitFileFailed()方法在文件不能被访问时候调用。 下面一个简单的例子来调用TraverseFiles 类。我们C盘创建以下这样的目录结构:{ @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; }}
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