Java遍历某路径下的所有PDF文件

参考了Java遍历目录下所有文件这条博客,作者提出了非递归和递归两种方法。我选择了非递归方法。

上面提到的博客存在一些问题,例如输入路径原作者只考虑了路径为文件夹,没有考虑路径为文件的情况。根据自己的目的修改即可。


正文开始

目标:找出某路径下的所有PDF文件

当然,也适用于找出所有文件、所有txt文件等等

输入:任意一个路径(可以是文件或文件夹

输出:该路径下所有PDF文件的路径

思路

---根据路径字符串是否以“.pdf”结尾来判断是否是PDF文件

首先判断输入路径是文件还是文件夹

  • 是文件则直接判断是否是PDF文件
  • 是文件夹,则获取其下所有的文件(夹)对象集合,存到LinkedList对象中

然后遍历LinkedList,每次获取并移除第一个对象进行判断

  • 对象是文件则直接判断是否是PDF文件
  • 对象是文件夹则获取遍历其下所有文件对象

              *是文件则直接判断是否是PDF文件

              *是文件夹,则将该对象加入到LinkedList中

           

原博代码修改后为

package load_select;

import java.io.File;
import java.util.Arrays;
import java.util.LinkedList;

public class FindAllFiles {

	public static void folderMethod1(String path) {
		
        File file = new File(path);
        LinkedList<File> list = new LinkedList<>();
        
        //保存所有pdf文件的对象
        LinkedList<File> pdfList = new LinkedList<File>();

        //该路径对应的文件或文件夹是否存在
        if (file.exists()) {
        	
        	//如果该路径为---文件或空文件夹
            if (null == file.listFiles()) {
//            	System.out.println(file.getAbsolutePath());
            	if(file.getAbsolutePath().endsWith(".pdf")) 
            		pdfList.add(file);
            }
            
            //如果该路径为非空文件夹
            else {
            	//将该路径下的所有文件(文件或文件夹)对象加入队列
                list.addAll(Arrays.asList(file.listFiles()));
                //遍历该队列     
                while (!list.isEmpty()) {
              	
                	File firstF = list.removeFirst();
                	
                	//这里不论是文件夹还是文件,只需判断是否以“.pdf”结尾
            		if(firstF.getAbsolutePath().endsWith(".pdf")) 
            			pdfList.add(firstF);
                	
                	File[] files = firstF.listFiles();
                  
                	if (null == files) {
                		//System.out.println(firstF.getAbsolutePath());
                		continue;
                	}
                	for (File f : files) {
                		if (f.isDirectory()) {
                			//System.out.println("文件夹:" + f.getAbsolutePath());
                			list.add(f);
                		} else {
                			//System.out.println("文件:" + f.getAbsolutePath());
                			
                			if(f.getAbsolutePath().endsWith(".pdf")) 
                    			pdfList.add(f);
                			
                		}
                	}
              }
            }

        } else {
            System.out.println("文件不存在!");
        }
        
        //输出所有pdf文件的路径
        for(File f : pdfList) 
        	System.out.println(f.getAbsolutePath());
        
    }
	
	public static void main(String[] args) {
		String path = "D:\\File\\pdf表格识别";    //改为自己的路径
		folderMethod1(path1);
	}
}

部分结果的截图

输出所有PDF文件的路径


 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值