文档资源的管理---Java扫描文件夹下面的所有文件名

13 篇文章 0 订阅
13 篇文章 0 订阅

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;  
    }  
}  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值