preVisitDirectory - 一個路徑被訪問時調(diào)用英文中喝雞湯用drink還是eat
PostVisitDirectory - 一個路徑的所有節(jié)點(diǎn)被訪問后調(diào)用。如果有錯誤發(fā)生,exception會傳遞給這個方法
visitFile - 文件被訪問時被調(diào)用。該文件的文件屬性被傳遞給這個方法
visitFileFailed - 當(dāng)文件不能被訪問時,此方法被調(diào)用。Exception被傳遞給這個方法。
如果你比較懶,不想實(shí)現(xiàn)所有方法。你可以選擇繼承 SimpleFileVisitor。它幫你實(shí)現(xiàn)了上述方法,你只需Override 你感興趣的方法。淘寶女裝夏裝新款
下面給個例子,簡單地遍歷一個文件夾,打印出所有信息
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/**
* @author kencs@foxmail.com
*/
public class FileVisitorTest extends SimpleFileVisitor<Path> {
private void find(Path path){
System.out.printf("訪問-%s:%s%n",(Files.isDirectory(path)?"目錄":"文件"),path.getFileName());
}
@Override
public FileVisitResult visitFile(Path file,BasicFileAttributes attrs){
find(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs){
find(dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file,IOException e){
System.out.println(e);
return FileVisitResult.CONTINUE;
}
public static void main(String[] args) throws IOException{
if(args.length!=1){
System.out.println("請輸入一個文件路徑作為參數(shù)");
System.exit(-1);
}
Files.walkFileTree(Paths.get( args[0]), new FileVisitorTest());
}
}
注意 FileVisitResult有四種
CONTINUE –繼續(xù)
TERMINATE –終止,這次遍歷結(jié)束了
SKIP_SUBTREE –子樹(當(dāng)前路徑的子目錄)不再遍歷了
SKIP_SIBLINGS –兄弟節(jié)點(diǎn)(同級別目錄)不再訪問了。
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/**
* @author kencs@foxmail.com
*/
public class FileVisitorTest extends SimpleFileVisitor<Path> {
private void find(Path path){
System.out.printf("訪問-%s:%s%n",(Files.isDirectory(path)?"目錄":"文件"),path.getFileName());
}
@Override
public FileVisitResult visitFile(Path file,BasicFileAttributes attrs){
find(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs){
find(dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file,IOException e){
System.out.println(e);
return FileVisitResult.CONTINUE;
}
public static void main(String[] args) throws IOException{
if(args.length!=1){
System.out.println("請輸入一個文件路徑作為參數(shù)");
System.exit(-1);
}
Files.walkFileTree(Paths.get( args[0]), new FileVisitorTest());
}
}