java 對文件夾目錄進(jìn)行深度遍歷實(shí)例代碼
java 對文件夾目錄進(jìn)行深度遍歷實(shí)例代碼
1、題目
對指定目錄進(jìn)行所有內(nèi)容的列出(包含子目錄中的內(nèi)容),也可以理解為對目錄進(jìn)行深度遍歷。
2、解題思想
從電腦中獲取文件目錄,建立函數(shù)對其遍歷,在這個函數(shù)中需要對該目錄中的每個文件進(jìn)行判斷,如果文件還是目錄,則調(diào)用函數(shù)本身繼續(xù)對其進(jìn)行遍歷,如果文件不是目錄,則直接輸出文件名。為了加強(qiáng)顯示的效果,我們還可以建立一個getSpace函數(shù),對其進(jìn)行縮進(jìn)。
需要注意的是,不要直接遍歷C盤的內(nèi)容,其目錄層次太深,含有太多的系統(tǒng)級文件,容易返回為空,導(dǎo)致空指針異常的發(fā)生,也不要直接遍歷D盤,因?yàn)橹灰浜须[藏的系統(tǒng)卷標(biāo)目錄,也會造成空指針異常的發(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)前的所有文件夾或者文件對象
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();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
SpringBoot3.x中自定義開發(fā)通用SDK的實(shí)現(xiàn)
本文介紹了SpringBoot和Maven創(chuàng)建自定義的SDK,包括創(chuàng)建項(xiàng)目、修改配置、編寫配置類、設(shè)置配置文件、構(gòu)建Jar包等,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
SpringBoot使用validation做參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟
這篇文章主要介紹了SpringBoot使用validation做參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-05-05
SpringBoot配置mybatis駝峰命名規(guī)則自動轉(zhuǎn)換的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot配置mybatis駝峰命名規(guī)則自動轉(zhuǎn)換的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
java swing實(shí)現(xiàn)簡單計(jì)算器界面
這篇文章主要為大家詳細(xì)介紹了java swing實(shí)現(xiàn)簡單計(jì)算器界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
spring boot udp或者tcp接收數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了spring boot udp或者tcp接收數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
利用Spring Validation實(shí)現(xiàn)輸入驗(yàn)證功能
這篇文章主要給大家介紹了如何利用Spring Validation完美的實(shí)現(xiàn)輸入驗(yàn)證功能,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,感興趣的朋友可以借鑒一下2023-06-06
從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率
這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Java使用Calendar類實(shí)現(xiàn)動態(tài)日歷
這篇文章主要為大家詳細(xì)介紹了Java使用Calendar類實(shí)現(xiàn)動態(tài)日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

