您好,登錄后才能下訂單哦!
java 對(duì)文件夾目錄進(jìn)行深度遍歷實(shí)例代碼
1、題目
對(duì)指定目錄進(jìn)行所有內(nèi)容的列出(包含子目錄中的內(nèi)容),也可以理解為對(duì)目錄進(jìn)行深度遍歷。
2、解題思想
從電腦中獲取文件目錄,建立函數(shù)對(duì)其遍歷,在這個(gè)函數(shù)中需要對(duì)該目錄中的每個(gè)文件進(jìn)行判斷,如果文件還是目錄,則調(diào)用函數(shù)本身繼續(xù)對(duì)其進(jìn)行遍歷,如果文件不是目錄,則直接輸出文件名。為了加強(qiáng)顯示的效果,我們還可以建立一個(gè)getSpace函數(shù),對(duì)其進(jìn)行縮進(jìn)。
需要注意的是,不要直接遍歷C盤的內(nèi)容,其目錄層次太深,含有太多的系統(tǒng)級(jí)文件,容易返回為空,導(dǎo)致空指針異常的發(fā)生,也不要直接遍歷D盤,因?yàn)橹灰浜须[藏的系統(tǒng)卷標(biāo)目錄,也會(huì)造成空指針異常的發(fā)生。
3、Java代碼
import java.io.File; public class DepthTraversal { public static void main(String[] args) { File dir = new File("d:\\BaiduYunDownload"); listAll(dir, 0); } public static void listAll(File dir, int level) { System.out.println(getSpace(level) + dir.getName()); level++; //每調(diào)用一次,level加1 File[] files = dir.listFiles(); //獲取指定目錄下當(dāng)前的所有文件夾或者文件對(duì)象 for (int x = 0; x < files.length; x++) { //循環(huán)遍歷 if (files[x].isDirectory()) { //如果是目錄,繼續(xù)調(diào)用listAll函數(shù) listAll(files[x], level); } else { //否則,直接輸出文件名 System.out.println(getSpace(level) + files[x].getName()); } } } private static String getSpace(int level) { //輸出空格,加強(qiáng)顯示效果 StringBuilder sb = new StringBuilder(); sb.append("|--"); for (int x = 0; x < level; x++) { sb.insert(0, "| "); } return sb.toString(); } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。