靜态的Files.list方法會傳回一個可以讀取目錄中各個項的Stream對象。目錄是被惰性讀取的,這使得處理具有大量項的目錄可以變得更高效。
因為讀取目錄涉及需要關閉的系統資源,是以應該使用try塊:

list方法不會進入子目錄。為了處理目錄中的所有子目錄,需要使用File.walk方法。
下面是加壓後的src.zip樹的周遊樣例:
正如你所見,無論何時,隻要周遊的項是目錄,那麼在進入它之前,會繼續通路它的兄弟項。
可以通過調用File.walk(pathToRoot, depth)來限制想要通路的樹的深度。兩種walk方法都具有FileVisitOption...的可變長參數,但是你隻能提供一種選項:FOLLOW_LINKS,即跟蹤符号連結。
這段代碼使用了Files.walk方法來将一個目錄複制到另一個目錄:
遺憾的是,你無法很容易地使用Files.walk方法來删除目錄樹,因為你需要在删除父目錄之前必須先删除子目錄。下一節将展示如何克服此問題。