在 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