讀取指定目錄下的所有檔案

2021-09-25 21:37:48 字數 2694 閱讀 6140

在開發或者面試的過程中,往往會遇到這樣的需求,就是讀取某個目錄下的所有檔案(內容),並且資料夾的層級不固定。基於這樣的情況,博主寫了個對應的demo,以備不時之需。

檔案系統層級關係可以看成是樹形結構,讀取某個目錄下的所有檔案,其實就是遍歷一顆樹,樹的遍歷分為深度優先廣度優先。對應的,分別寫了兩個小demo。

深度優先

深度優先搜尋演算法(depth-first-search,dfs)是一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。

/**

* 呼叫:readfiletree("d:\\directory");

* @param rootpath

* @throws ioexception

*/public void readfiletree(string rootpath) throws ioexception

system.out.println(rootpath);

fileinputstream is = null;

bufferedreader reader = null;

stringbuilder sb = new stringbuilder();

if (rootfile.isfile())

system.out.println("檔案內容 : " + sb.tostring());

} else

}if (reader != null)

if (is != null)

}

輸出結果:

d:\directory

d:\directory\pkg1

d:\directory\pkg1\pkg1-1

d:\directory\pkg1\pkg1-2

d:\directory\pkg1\pkg1-2\pkg1-2-test.txt

檔案內容 : 對酒當歌,人生幾何。

d:\directory\pkg1\pkg1-3

d:\directory\pkg2

d:\directory\pkg2\pkg2-1

d:\directory\pkg2\pkg2-2

d:\directory\pkg3

d:\directory\pkg3\pkg3-test.txt

檔案內容 : 何以解憂,唯有杜康。

d:\directory\pkg4

d:\directory\pkg4\pkg4-1

d:\directory\pkg4\pkg4-1\pkg-4-1-test.txt

檔案內容 : 月明星稀,烏鵲南飛。

從輸出結果可以看出是深度優先。

廣度優先

廣度優先搜尋演算法(breadth-first-search,縮寫為bfs),又譯作寬度優先搜尋,或橫向優先搜尋,是一種圖形搜尋演算法。簡單的說,bfs是從根節點開始,沿著樹的寬度遍歷樹的節點。如果所有節點均被訪問,則演算法中止。

private static queuepathqueue = new linkedlist<>();

public synchronized void readfiletree(string rootpath) throws ioexception

system.out.println(rootpath);

fileinputstream is = null;

bufferedreader reader = null;

stringbuilder sb = new stringbuilder();

if (rootfile.isfile())

system.out.println("檔案內容 : " + sb.tostring());

} else

}//佇列非空時,取出path讀取

while (!pathqueue.isempty())

if (reader != null)

if (is != null)

}

輸出結果:

d:\directory

d:\directory\pkg1

d:\directory\pkg2

d:\directory\pkg3

d:\directory\pkg4

d:\directory\pkg1\pkg1-1

d:\directory\pkg1\pkg1-2

d:\directory\pkg1\pkg1-3

d:\directory\pkg2\pkg2-1

d:\directory\pkg2\pkg2-2

d:\directory\pkg3\pkg3-test.txt

檔案內容 : 何以解憂,唯有杜康。

d:\directory\pkg4\pkg4-1

d:\directory\pkg1\pkg1-2\pkg1-2-test.txt

檔案內容 : 對酒當歌,人生幾何。

d:\directory\pkg4\pkg4-1\pkg-4-1-test.txt

檔案內容 : 月明星稀,烏鵲南飛。

從輸出結果可以看出,搜尋是按照層次來遍歷的,即廣度優先。

博主演算法渣,如果各位同學有更優雅的實現方式,還請不吝賜教。

C 讀取指定檔案目錄下的所有檔名

string file 你要查詢的檔名 1 使用c 獲取指定目錄下的所有檔名稱,實際 如下 string filepath 等到的完整的檔名 string filenames directory.getfiles f dfasfafaf searchoption.alldirectories 獲取目...

MATLAB讀取指定目錄下的所有檔名 檔案操作

1 讀取指定目錄下的所有符合相應字尾的檔案的名字。filepath original ply diroutput dir fullfile filepath,ply plyname 其中.是指當前目錄的上一級目錄,ply 是正規表示式,只反饋出符合這個字尾的檔案的名字。plyname便是檔案名字的元...

遍歷輸出指定目錄下的所有檔案

opendir readdir closedir 這三個函式主要用來遍歷目錄。在使用這三個函式前必須先包括 以下兩個標頭檔案 include include opendir 函式的原型為 dir opendir const char name 它返回乙個 dir 型別,這就是乙個控制代碼啦,你不用管...