简体   繁体   English

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

[英]how to get name of all file in a directory and sub-directory in java

I have a directory which consist of some different sub directory which every one have several files.我有一个目录,其中包含一些不同的子目录,每个子目录都有几个文件。 how can i get name of all file?如何获取所有文件的名称?

If you want to use a library, try the listFiles method from apache commons io FileUtils , which will recurse into directories for you.如果您想使用库,请尝试 apache commons io FileUtils 中listFiles方法,它会为您递归到目录中。

Here's an example of how you could call it to find all files named *.dat and *.txt in any directory anywhere under the specified starting directory:下面是一个示例,说明如何调用它以在指定起始目录下的任何目录中查找名为*.dat*.txt所有文件:

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

This programme will display the whole structure with nested files and nested sub directories with file system.该程序将显示带有嵌套文件和带有文件系统的嵌套子目录的整个结构。

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);  
       }  
    } 
}

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

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

To list a directory using Java do something similar to this要使用 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);
}

Most of this code comes from here, http://www.roseindia.net/java/beginners/DirectoryListing.shtml大部分代码来自这里, http://www.roseindia.net/java/beginners/DirectoryListing.shtml

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM