Java扫描文件夹下所有文件名
程序员文章站
2023-11-17 17:00:46
mis内容项目系统,基于文档资源管理管理的,需要扫描一个文件夹下面的所有文件,需求的代码实现。
package q.test.filescanner;
i...
mis内容项目系统,基于文档资源管理管理的,需要扫描一个文件夹下面的所有文件,需求的代码实现。
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<object> scanfiles = new arraylist<object>(); /**linkedlist实现**/ private static linkedlist<file> queuefiles = new linkedlist<file>(); /** * todo:递归扫描指定文件夹下面的指定文件 * @return arraylist<object> * @author * @time 2017年11月3日 */ public static arraylist<object> **scanfileswithrecursion**(string folderpath) throws scanfilesexception{ arraylist<string> dirctorys = new arraylist<string>(); 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<object> * @param folderpath 需要进行文件扫描的文件夹路径 * @author * @time 2017年11月3日 */ public static arraylist<object> 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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。