Java7遍歷文件夾 – JAVA編程語言程序開發技術文章

Java遍歷文件夾的方法有多種,之前我寫瞭一種遍歷文件夾的方法點擊,使用File類的方法遞歸遍歷,這次是使用Java7提供的新的方法遍歷文件夾。

File提供兩個方法遍歷文件夾,

 

上面兩個方法都需要FileVisitor參數,FileVisitor代表一個文件訪問器,walkFileTree()方法會自動遍歷start路徑下的所有文件和子目錄,遍歷文件和子目錄都會觸發FileVisitor中相應的方法。這四個方法在下面的代碼中出現。

FileVisitor中的四個方法會返回一個FileVisitorResult,它代是一個枚舉類,代表訪問之後的行為。

FileVisitor定義瞭如下幾種行為:

CONTINUE:代表訪問之後的繼續行為

SKIP_SIBLINGS:代表繼續訪問,但不訪問該文件或目錄的兄弟文件或目錄

SKIP_SUBTREE:繼續訪問,但不訪問該目錄或文件的子目錄

TERMINATE:終止訪問

[java]
import java.io.IOException; 
import java.nio.ByteBuffer; 
import java.nio.CharBuffer; 
import java.nio.charset.Charset; 
import java.nio.charset.CharsetDecoder; 
import java.nio.charset.CharsetEncoder; 
import java.nio.file.FileVisitResult; 
import java.nio.file.FileVisitor; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.nio.file.attribute.BasicFileAttributes; 
public class Test { 
    public static void main(String[] args) throws Exception 
    { 
         
        Files.walkFileTree(Paths.get("D:","linux"), new FileVisitor(){ 
 
            @Override 
            public FileVisitResult preVisitDirectory(Object dir, 
                    BasicFileAttributes attrs) throws IOException { 
                //訪問文件夾之前調用 
                System.out.println(dir); 
                return FileVisitResult.CONTINUE; 
            } 
 
            @Override 
            public FileVisitResult visitFile(Object file, 
                    BasicFileAttributes attrs) throws IOException { 
                // 訪問文件調用 
                System.out.println(file); 
                return FileVisitResult.CONTINUE; 
            } 
 
            @Override 
            public FileVisitResult visitFileFailed(Object file, IOException exc) 
                    throws IOException { 
                // 訪問文件失敗時調用 
                return FileVisitResult.CONTINUE; 
            } 
 
            @Override 
            public FileVisitResult postVisitDirectory(Object dir, 
                    IOException exc) throws IOException { 
                // 訪問文件夾之後調用 
                return FileVisitResult.CONTINUE; 
            } 
             
        }); 
    } 

發佈留言