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

问题描述:

我有一个目录,其中包含一些不同的子目录,每个子目录都有几个文件。我怎样才能得到所有文件的名称?如何获取java中的目录和子目录中的所有文件的名称

+1

你试过了什么?如果你看'java.io',它应该是相当直接的代码。你需要一个递归下降函数。 – 2012-01-09 13:17:40

如果你想使用一个库,尝试从阿帕奇公地listFiles方法IO FileUtils,这将递归到你的目录。

这里是你如何可以把它找到指定的起始目录下的任何地方命名的任何目录*.dat*.txt所有文件的例子:

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

+1使用库 – 2012-01-09 13:34:39

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

您在找File.list()了解更多详情,请仔细阅读javadoc。

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()); 
             } 
           } 
         } 
       } 
     } 
+0

感谢它也在工作 – itro 2012-01-10 07:38:21

使用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

+0

感谢它的工作 – itro 2012-01-10 08:04:21

使用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) 
       );