如何获取java中目录和子目录中所有文件的名称

时间:2012-01-09 13:15:01

标签: java file file-io directory-structure

我有一个目录,它包含一些不同的子目录,每个目录都有几个文件。我怎么能得到所有文件的名称?

7 个答案:

答案 0 :(得分:7)

如果您想使用库,请尝试使用apache commons io listFiles中的FileUtils方法,该方法将递归到您的目录中。

以下是一个示例,说明如何在指定的起始目录下的任何目录中调用它来查找名为*.dat*.txt的所有文件:

Collection<File> files = FileUtils.listFiles(new File("my/dir/path"), {"dat", "txt"}, true);

答案 1 :(得分:3)

public static void walkin(File dir) {
                String pattern = "file pattern"; //for example ".java"

                File listFile[] = dir.listFiles();
                if(listFile != null) {
                        for(int i=0; i<listFile.length; i++) {
                                if(listFile[i].isDirectory()) {
                                        walkin(listFile[i]);
                                } else {
                                        if(listFile[i].getName().endsWith(pattern))
                                        {
                                                System.out.println(listFile[i].getPath());
                                        }
                                }
                        }
                }
        }

答案 2 :(得分:1)

通过目录结构进行递归,收集不是子目录的所有文件的名称。

答案 3 :(得分:1)

您正在寻找File.list()仔细查看javadoc以获取更多详细信息。

答案 4 :(得分:1)

使用Java列出目录,执行与此类似的操作

File dir = new File(fname);
String[] list = dir.list();

if(list == null){
  System.out.println("Specified directory does not exist or is not a directory.");
  System.exit(0);
}else{
  //list the directory content
  for(int i = 0; i < chld.length; i++){
  String fileName = list[i];
  System.out.println(fileName);
}

此代码大部分来自此处,http://www.roseindia.net/java/beginners/DirectoryListing.shtml

答案 5 :(得分:1)

该程序将显示带有嵌套文件的整个结构以及带有文件系统的嵌套子目录。

import java.io.File; 
  
public class DirectoryStructure  
{ 
     static void RecursivePrint(File[] arr, int index, int level)  
     { 
         // terminate condition 
         if (index == arr.length) {
             return;
         }
           
         // tabs for internal levels 
         for (int i = 0; i < level; i++) {
             System.out.print("\t");
         }
           
         // for files 
         if (arr[index].isFile()) {
             System.out.println(arr[index].getName());
         }
           
         // for sub-directories 
         else if (arr[index].isDirectory()) 
         { 
             System.out.println("[" + arr[index].getName() + "]"); 
               
             // recursion for sub-directories 
             RecursivePrint(arr[index].listFiles(), 0, level + 1); 
         } 
            
         // recursion for main directory 
         RecursivePrint(arr, ++index, level); 
    } 
      
    // Driver Method 
    public static void main(String[] args) 
    { 
        // Provide full path for directory(change accordingly)   
        String maindirpath = "E:\\dms\\Notes"; 
                  
        // File object 
        File maindir = new File(maindirpath); 
           
        if (maindir.exists() && maindir.isDirectory()) 
        { 
            // array for files and sub-directories  
            // of directory pointed by maindir 
            File arr[] = maindir.listFiles(); 
              
            System.out.println("**********************************************"); 
            System.out.println("Files from main directory : " + maindir); 
            System.out.println("**********************************************"); 
              
            // Calling recursive method 
            RecursivePrint(arr, 0, 0);  
       }  
    } 
}

答案 6 :(得分:0)

使用Apache Commons

String filePath = "/apps/fraud";
String[] acceptedExtension = {"ctl","otl","dat","csv","xls"};
String[] acceptedFolders = {"suresh","dir","kernel"};

Collection fileList =  FileUtils.listFiles(
                 new File(filePath), 
                 new SuffixFileFilter(acceptedExtension) ,
                 new NameFileFilter(acceptedFolders) 
                );