您好,登錄后才能下訂單哦!
在java中遍歷一個(gè)文件夾里邊的所有文件,可以有兩種方式:
一、遞歸遍歷
通常也是開發(fā)者第一時(shí)間能想到的方法。
遞歸遍歷的優(yōu)點(diǎn)是:
實(shí)現(xiàn)起來相對(duì)簡(jiǎn)單,代碼量相對(duì)較少,執(zhí)行效率較高。
缺點(diǎn)是:
比較吃內(nèi)存,對(duì)硬件要求較高。
具體算法如下:
// 遞歸遍歷 private void getDirectory(File file) { File flist[] = file.listFiles(); if (flist == null || flist.length == 0) { return 0; } for (File f : flist) { if (f.isDirectory()) { //這里將列出所有的文件夾 System.out.println("Dir==>" + f.getAbsolutePath()); getDirectory(f); } else { //這里將列出所有的文件 System.out.println("file==>" + f.getAbsolutePath()); } } }
二、非遞歸遍歷
具體思路:
遍歷一個(gè)文件夾的時(shí)候,如果是文件夾,就添加到linkedlist里去,如果是文件則列出。這樣該目錄的文件和文件夾就遍歷完畢了,文件夾全部被保存到linkedlist里,所以剩下的就是遍歷linkedlist里邊的文件夾的文件,遍歷方式同上邊的操作一致。
如果是文件夾就添加到linkedlist里邊,當(dāng)然每次從列表取出一個(gè)文件夾之后需要從列表中刪除該文件夾,這里采用linkedlist.removeFirst()
來讀取,這樣是每次讀取列表的第一個(gè)元素并將其從列表剔除。這樣只要遍歷到linkedlist的狀態(tài)是isEmty的時(shí)候就說明遍歷完畢了。
具體算法如下:
/** * 非遞歸遍歷 * @param file * @return */ public static LinkedList<File> GetDirectory(String path) { File file = new File(path); LinkedList<File> Dirlist = new LinkedList<File>(); // 保存待遍歷文件夾的列表 LinkedList<File> fileList = new LinkedList<File>(); GetOneDir(file, Dirlist, fileList);// 調(diào)用遍歷文件夾根目錄文件的方法 File tmp; while (!Dirlist.isEmpty()) { tmp = (File) Dirlist.removeFirst(); // 從文件夾列表中刪除第一個(gè)文件夾,并返回該文件夾賦給tmp變量 // 遍歷這個(gè)文件夾下的所有文件,并把 GetOneDir(tmp, Dirlist, fileList); } return fileList; } // 遍歷指定文件夾根目錄下的文件 private static void GetOneDir(File file, LinkedList<File> Dirlist, LinkedList<File> fileList) { // 每個(gè)文件夾遍歷都會(huì)調(diào)用該方法 File[] files = file.listFiles(); if (files == null || files.length == 0) { return; } for (File f : files) { if (f.isDirectory()) { Dirlist.add(f); } else { // 這里列出當(dāng)前文件夾根目錄下的所有文件,并添加到fileList列表中 fileList.add(f); // System.out.println("file==>" + f); } } }
以上就是java實(shí)現(xiàn)遍歷某個(gè)目錄(包括子目錄)下的所有文件的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。