Java 遍歷指定目錄下的文件夾並查找包含指定關鍵字的文件


package scc.com.sample;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

public class TestFindfileT {
    
    /**
     * 在指定目錄中查找包含關鍵字的文件(或查找后綴名為XXX的文件),返回包含指定關鍵字的文件路徑.
     * @author Guozhu Zhu
     * @date 2018/6/3
     * @version 1.0
     *
     */

        
        public static List<File> searchFiles(File folder,  String keyword) {
            List<File> result = new ArrayList<File>();
            if (folder.isFile())
                result.add(folder);
     
            File[] subFolders = folder.listFiles(new FileFilter() {
                @Override
                public boolean accept(File file) {
                    if (file.isDirectory()) {
                        return true;
                    }
                    if (file.getName().toLowerCase().contains(keyword)) {
                        return true;
                    }
                    return false;
                }
            });
            
            /*查找后綴名
             * File[] subFolders = folder.listFiles(new FileFilter() {
                @Override
                public boolean accept(File file) {
                    if (file.isDirectory()) {
                        return true;
                    }
                    if (file.getName().toLowerCase().endsWith(keyword)) {
                        return true;
                    }
                    return false;
                }
            });*/
     
            if (subFolders != null) {
                for (File file : subFolders) {
                    if (file.isFile()) {
                        // 如果是文件則將文件添加到結果列表中
                        result.add(file);
                    } else {
                        // 如果是文件夾,則遞歸調用本方法,然后把所有的文件加到結果列表中
                        result.addAll(searchFiles(file, keyword));
                    }
                }
            }
            return result;
        }
     
        public static void main(String[] args) {
            List<File> files = searchFiles(new File("E:\\tem"), "1");
            System.out.println("共找到:" + files.size() + "個文件");
            for (File file : files) {
                System.out.println(file.getAbsolutePath());
            }
        }
        
    }

輸出結果:

共找到:3個文件
E:\tem\1.png
E:\tem\20192208092223.png
E:\tem\tem1\20195308105326.png

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM