這篇文章主要介紹JDK7新特性之遍歷文件樹的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十載時間我們累計服務了上千家以及全國政企客戶,如人造霧等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術實力獲得客戶的一致贊譽。
有時需要遞歸遍歷一個文件樹,比如查找一個文件夾內(nèi)符合條件的文件,查找某一天創(chuàng)建的文件……。jdk7 nio包提供一個新的接口 FileVisitor。它提供了遍歷文件樹的各種操作。
preVisitDirectory - 一個路徑被訪問時調(diào)用
PostVisitDirectory - 一個路徑的所有節(jié)點被訪問后調(diào)用。如果有錯誤發(fā)生,exception會傳遞給這個方法
visitFile - 文件被訪問時被調(diào)用。該文件的文件屬性被傳遞給這個方法
visitFileFailed - 當文件不能被訪問時,此方法被調(diào)用。Exception被傳遞給這個方法。
如果你比較懶,不想實現(xiàn)所有方法。你可以選擇繼承 SimpleFileVisitor。它幫你實現(xiàn)了上述方法,你只需Override 你感興趣的方法。
下面給個例子,簡單地遍歷一個文件夾,打印出所有信息
Java代碼
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 { 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()); } }
隨便選擇一個路徑作為參數(shù)
java FileVisitorTest "C:\\Program Files\\Java\\jre7\\bin"
運行結果代碼
訪問-目錄:bin 訪問-文件:awt.dll 訪問-文件:axbridge.dll 訪問-目錄:client 訪問-文件:classes.jsa 訪問-文件:jvm.dll 訪問-文件:Xusage.txt 訪問-文件:dcpr.dll 訪問-文件:deploy.dll 訪問-文件:deployJava1.dll 訪問-文件:dt_shmem.dll 訪問-文件:dt_socket.dll ......
注意 FileVisitResult有四種
CONTINUE –繼續(xù)
TERMINATE –終止,這次遍歷結束了
SKIP_SUBTREE –子樹(當前路徑的子目錄)不再遍歷了
SKIP_SIBLINGS –兄弟節(jié)點(同級別目錄)不再訪問了。
可以通過這些返回值來控制遍歷文件樹的流程
以上是“JDK7新特性之遍歷文件樹的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!