日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java遞歸與非遞歸實現掃描文件夾下所有文件

java掃描指定文件夾下面的所有文件,供大家參考,具體內容如下

掃描一個文件夾下面的所有文件,因為文件夾的層數沒有限制可能多達幾十層幾百層,通常會采用兩種方式來遍歷指定文件夾下面的所有文件。

遞歸方式

非遞歸方式(采用隊列或者棧實現)

下面我就給出兩種方式的實現代碼,包括了遞歸與非遞歸實現,code如下所示。

java代碼:

package q.test.filescanner;

import java.io.File;

import java.util.ArrayList;

import java.util.LinkedList;

import q.test.filescanner.exception.ScanFilesException;

/**

* @author 邪惡小先生

*/

public class FolderFileScanner {

private static ArrayList scanFiles = new ArrayList();

/**linkedList實現**/

private static LinkedList queueFiles = new LinkedList();

/**

* TODO:遞歸掃描指定文件夾下面的指定文件

* @return ArrayList

* @author 邪惡小先生(LQ)

* @time 2017年11月3日

*/

public static ArrayList scanFilesWithRecursion(String folderPath) throws ScanFilesException{

ArrayList dirctorys = new ArrayList();

File directory = new File(folderPath);

if(!directory.isDirectory()){

throw new ScanFilesException('"' + folderPath + '"' + " input path is not a Directory , please input the right path of the Directory. ^_^...^_^");

}

if(directory.isDirectory()){

File [] filelist = directory.listFiles();

for(int i = 0; i < filelist.length; i ++){

/**如果當前是文件夾,進入遞歸掃描文件夾**/

if(filelist[i].isDirectory()){

dirctorys.add(filelist[i].getAbsolutePath());

/**遞歸掃描下面的文件夾**/

scanFilesWithRecursion(filelist[i].getAbsolutePath());

}

/**非文件夾**/

else{

scanFiles.add(filelist[i].getAbsolutePath());

}

}

}

return scanFiles;

}

/**

*

* TODO:非遞歸方式掃描指定文件夾下面的所有文件

* @return ArrayList

* @param folderPath 需要進行文件掃描的文件夾路徑

* @author 邪惡小先生(LQ)

* @time 2017年11月3日

*/

public static ArrayList scanFilesWithNoRecursion(String folderPath) throws ScanFilesException{

File directory = new File(folderPath);

if(!directory.isDirectory()){

throw new ScanFilesException('"' + folderPath + '"' + " input path is not a Directory , please input the right path of the Directory. ^_^...^_^");

}

else{

//首先將第一層目錄掃描一遍

File [] files = directory.listFiles();

//遍歷掃出的文件數組,如果是文件夾,將其放入到linkedList中稍后處理

for(int i = 0; i < files.length; i ++){

if(files[i].isDirectory()){

queueFiles.add(files[i]);

}else{

//暫時將文件名放入scanFiles中

scanFiles.add(files[i].getAbsolutePath());

}

}

//如果linkedList非空遍歷linkedList

while(!queueFiles.isEmpty()){

//移出linkedList中的第一個

File headDirectory = queueFiles.removeFirst();

File [] currentFiles = headDirectory.listFiles();

for(int j = 0; j < currentFiles.length; j ++){

if(currentFiles[j].isDirectory()){

//如果仍然是文件夾,將其放入linkedList中

queueFiles.add(currentFiles[j]);

}else{

scanFiles.add(currentFiles[j].getAbsolutePath());

}

}

}

}

return scanFiles;

}

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持碼農之家。

以上就是本次給大家分享的關于java的全部知識點內容總結,大家還可以在下方相關文章里找到相關文章進一步學習,感謝大家的閱讀和支持。

您可能感興趣的文章:

總結

以上是生活随笔為你收集整理的扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。