簡體   English   中英

如何在java中獲取目錄和子目錄中所有文件的名稱

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

我有一個目錄,其中包含一些不同的子目錄,每個子目錄都有幾個文件。 如何獲取所有文件的名稱?

如果您想使用庫,請嘗試 apache commons io FileUtils 中listFiles方法,它會為您遞歸到目錄中。

下面是一個示例,說明如何調用它以在指定起始目錄下的任何目錄中查找名為*.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());
                                        }
                                }
                        }
                }
        }

該程序將顯示帶有嵌套文件和帶有文件系統的嵌套子目錄的整個結構。

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 以獲取更多詳細信息。

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

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