Java 文件夹遍历与排序

作者: ted005 | 来源:发表于2015-07-20 11:54 被阅读1246次

今天的一个需求是查找给定磁盘路径下的所有SQL文件,导入Sybase IQ。已经有一段时间没有写过类似代码,就此练手纪录一下。

需求: 寻找给定文件夹中所有的PDF文件

  • 不使用FileFilter

    public class PDFFinder {
        public static void main(String[] args){
            File directory = new File("c:\temp");
            List<File> pdfFiles = getAllPDFFiles(directory);
        }
    
       private static List<File> getAllPDFFiles(File directory){
         List<File> files = new ArrayList<File>();
    
         if(!directory.isDirectory()){
            return Collections.emptyList();
         }
    
         File[] listFiles = directory.listFiles();
         for(File file : listFiles){
            if(file.isFile() && file.getName().endsWith("pdf")){
               files.add(file);
            }        
            else {
              files.addAll(getAllPDFFiles(file));
            }   
          }
          return files;
        }
    }
    
  • 使用FileFilter

        public class PDFFinder {
         public static void main(String[] args){
             File directory = new File("c:\temp");
             List<File> pdfFiles = getAllPDFFiles(directory);
         }
    
         private static List<File> getAllPDFFiles(File directory){
               List<File> files = new ArrayList<File>();
    
               if(!directory.isDirectory()){
                   return Collections.emptyList();
                }
    
                File[] listFiles = directory.listFiles(new FileFilter(){
                           
                          @Override
                          public boolean accept(File pathname){
                                 if(pathname.isFile() && pathname.getName().endsWith("pdf")){
                                      return true;     
                                 }
                                 else {  //include folders
                                      return true;
                                 }
                          }
                 });
    
                File file = null;
                for(int i = 0; i < listFiles.length; i++){
                     file = listFiles[i];
                      if(file.isFile()){
                          files.add(file);
                      }        
                     else {
                          files.addAll(getAllPDFFiles(file));
                     }   
                 }
                return files;
           }
       }
    
  • 文件排序
    需求:文件夹在前,文件在后,并按照A-Z排列

      Collections.sort(pdfFiles, new Comparator<File>(){
            @Override
            public int compare(File obj1, File obj2){
                  if(obj1.isDirectory() && obj2.isFile()){
                       return 1;
                  }
                  else if(obj1.isFile() && obj2.isDirectory()){
                       return -1;
                  }
                  else{
                       return obj1.getName().compareTo(obj2.getName());
                  }
            }
      })

相关文章

  • Java 文件夹遍历与排序

    今天的一个需求是查找给定磁盘路径下的所有SQL文件,导入Sybase IQ。已经有一段时间没有写过类似代码,就此练...

  • 数据结构必备代码

    目录: 排序算法 树的遍历 查找 链表插入 数组与列表转化 二维数组排序 java中输入 集合遍历 一、基本排序1...

  • 排序算法

    常见排序算法及JAVA实现 简单选择排序(SelectSort) 选择排序思想很简单,对所有元素进行遍历,选出最小...

  • FileSnap

    FileSnap.java 找到100个snapshot文件,按zxid降序排序遍历找到的snapshot文件,从...

  • 集合

    java集合接口有List,Set,Map。 List和Set都实现了Collection(对集合排序,遍历)接口...

  • 11.字节流操作文件夹

    //使用字节流访问一个路径下的文件夹,遍历复制含有java文件的文件夹 package com.itheima_0...

  • 数据结构题目:树

    数据结构题目:树 题目:二叉排序树的构建与遍历 c++: 转码似乎有点问题,用utf-8就行了 java:

  • java day 17

    I/O java I/O读写基本类相关知识学习创建文件夹 创建文件 遍历文件夹下的文件 写入文件 读取文件

  • 二叉树的遍历

    前序遍历 python java 后序遍历 java python 中序遍历 java python

  • 查找重复[数组]

    链接:java使用库函数排序 题目描述 解决思路 先将整个数组排序 遍历一次,每次判断两个数是否相等,若遇见相等直...

网友评论

    本文标题:Java 文件夹遍历与排序

    本文链接:https://www.haomeiwen.com/subject/quypqttx.html