在目录及其子目录中搜索文件

时间:2015-02-04 02:12:49

标签: java

我想搜索目录及其子目录中的所有.txt文件。这是我到目前为止。

package com.gm.scratchpad;

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

public class Main {     

    public static List<File> digFiles(File root, String typeOfFiles) {
        ArrayList<File> files = new ArrayList<File>();  
        File[] files1 = root.listFiles();          
        return Arrays.asList(files1);     
    }

    public static void main(String[] args) {         
        System.out.println("Hey, here are the files we dug!");
        System.out.println(digFiles(new File("C:/development/scratchpad/test/vinvRoot"),null));    
    } 
} 

2 个答案:

答案 0 :(得分:-1)

我建议你使用File.walkFileTree。有关如何使用它的说明,请参阅here

答案 1 :(得分:-1)

我不打算给你实际代码。这是一个应该有用的伪代码。这是最天真的实施方式。一旦您知道如何实施,您应该能够改进它:

List<File> findFiles(File directoryToSearch, String fileType) {
     List<File> result = ...;
     for each entry in directoryToSearch{
         if (entry is a directory) {
             result.addAll(findFiles(entry, fileType));
         } else if (entry is a file and entry is of fileType) {
             result.add(entry);
         }
     }
     return result;
}

实际上,递归目录遍历很常见,并且已经有很多实用程序可以提供帮助。