Java遍歷輸出指定目錄、樹形結(jié)構(gòu)所有文件包括子目錄下的文件
下面通過一段代碼介紹下Java輸出指定目錄、樹形結(jié)構(gòu)下的所有文件包括子目錄中的文件的方法,并附有效果圖。
import java.io.File;
public class ReadDirectory {
// 文件所在的層數(shù)
private int fileLevel;
/**
* 生成輸出格式
* @param name 輸出的文件名或目錄名
* @param level 輸出的文件名或者目錄名所在的層次
* @return 輸出的字符串
*/
public String createPrintStr(String name, int level) {
// 輸出的前綴
String printStr = "";
// 按層次進(jìn)行縮進(jìn)
for (int i = ; i < level; i ++) {
printStr = printStr + " ";
}
printStr = printStr + "- " + name;
return printStr;
}
/**
* 輸出初始給定的目錄
* @param dirPath 給定的目錄
*/
public void printDir(String dirPath){
// 將給定的目錄進(jìn)行分割
String[] dirNameList = dirPath.split("\\\\");
// 設(shè)定文件level的base
fileLevel = dirNameList.length;
// 按格式輸出
for (int i = ; i < dirNameList.length; i ++) {
System.out.println(createPrintStr(dirNameList[i], i));
}
}
/**
* 輸出給定目錄下的文件,包括子目錄中的文件
* @param dirPath 給定的目錄
*/
public void readFile(String dirPath) {
// 建立當(dāng)前目錄中文件的File對(duì)象
File file = new File(dirPath);
// 取得代表目錄中所有文件的File對(duì)象數(shù)組
File[] list = file.listFiles();
// 遍歷file數(shù)組
for (int i = ; i < list.length; i++) {
if (list.isDirectory()) {
System.out.println(createPrintStr(list.getName(), fileLevel));
fileLevel ++;
// 遞歸子目錄
readFile(list.getPath());
fileLevel --;
} else {
System.out.println(createPrintStr(list.getName(), fileLevel));
}
}
}
public static void main(String[] args) {
ReadDirectory rd = new ReadDirectory();
String dirPath = "D:\\有道詞典";
rd.printDir(dirPath);
rd.readFile(dirPath);
}
}
輸出結(jié)果如下:

以上就是本文的全部內(nèi)容,希望大家喜歡。
相關(guān)文章
spring boot請(qǐng)求異常處理并返回對(duì)應(yīng)的html頁面
這篇文章主要介紹了spring boot處理請(qǐng)求異常并返回對(duì)應(yīng)的html頁面,包括404異常處理和500異常處理,需要的朋友可以參考下2017-07-07
Java 中解決Unsupported major.minor version 51.0的問題
本文主要介紹解決Unsupported major.minor version 51.0的問題, 這里給大家整理了詳細(xì)資料,有需要的小伙伴可以參考下2016-08-08
關(guān)于Java的對(duì)象序列化流和反序列化流詳細(xì)解讀
這篇文章主要介紹了關(guān)于Java的對(duì)象序列化流和反序列化流,對(duì)象序列化:就是將對(duì)象保存到磁盤中,或者在網(wǎng)絡(luò)中傳輸對(duì)象,反之,自己序列還可以從文件中讀取回來,重構(gòu)對(duì)象,對(duì)它進(jìn)行反序列化,需要的朋友可以參考下2023-05-05
MyBatis在insert插入操作時(shí)返回主鍵ID的配置(推薦)
這篇文章主要介紹了MyBatis在insert插入操作時(shí)返回主鍵ID的配置的相關(guān)資料,需要的朋友可以參考下2017-10-10
java使用TimerTask定時(shí)器獲取指定網(wǎng)絡(luò)數(shù)據(jù)
java.util.Timer定時(shí)器,實(shí)際上是個(gè)線程,定時(shí)調(diào)度所擁有的TimerTasks。一個(gè)TimerTask實(shí)際上就是一個(gè)擁有run方法的類,需要定時(shí)執(zhí)行的代碼放到run方法體內(nèi),TimerTask一般是以匿名類的方式創(chuàng)建,下面的就用示例來學(xué)習(xí)他的使用方法2014-01-01
詳解Java8函數(shù)式編程之收集器的應(yīng)用
這篇文章主要介紹了詳解Java8函數(shù)式編程之收集器的應(yīng)用,收集器是一種通用的、從流生成復(fù)雜值的結(jié)構(gòu)??梢允褂盟鼜牧髦猩蒐ist、Set、Map等集合,需要的朋友可以參考下2023-04-04

