2013-02-03 41 views
41

thể trùng lặp:
List all files from a directory recursively with Javadanh sách tất cả các file trong thư mục và cũng phụ thư mục

Làm thế nào tôi có thể trả về một mảng tập tin đó bao gồm tất cả các file vào thư mục và cũng phụ thư mục của tôi phương pháp chỉ làm việc cho thư mục và nó không bao gồm các thư mục con.

public File[] listf(String directoryName) { 

    // .............list file 
    File directory = new File(directoryName); 

    // get all the files from a directory 
    File[] fList = directory.listFiles(); 

    for (File file : fList) { 
     if (file.isFile()) { 
      System.out.println(file.getAbsolutePath()); 
     } else if (file.isDirectory()) { 
      listf(file.getAbsolutePath()); 
     } 
    } 
    System.out.println(fList); 
    return fList; 
}       
+5

Bạn có thể sử dụng 'FileUtils' – Maroun

+0

Xóa khối kiểm tra xem đó có phải là thư mục con không? –

+2

FileUtils.listFiles (dir, chuỗi mới [] {". Xml"}, true) ... trong apache-commons – user2069723

Trả lời

61

Sử dụng bạn mã hiện tại, hãy tinh chỉnh này:

public void listf(String directoryName, ArrayList<File> files) { 
    File directory = new File(directoryName); 

    // get all the files from a directory 
    File[] fList = directory.listFiles(); 
    for (File file : fList) { 
     if (file.isFile()) { 
      files.add(file); 
     } else if (file.isDirectory()) { 
      listf(file.getAbsolutePath(), files); 
     } 
    } 
} 
+1

fyi nếu bạn muốn thư mục hiện tại bạn có thể sử dụng 'tệp mới (". "); ' – Csanesz

+5

Có thể danh sách void công khai (String directoryName, Danh sách tệp) {tốt hơn là –

21

Sử dụng FileUtils từ Apache commons.

listFiles 

public static Collection<File> listFiles(File directory, 
             String[] extensions, 
             boolean recursive) 
Finds files within a given directory (and optionally its subdirectories) which match an array of extensions. 
Parameters: 
directory - the directory to search in 
extensions - an array of extensions, ex. {"java","xml"}. If this parameter is null, all files are returned. 
recursive - if true all subdirectories are searched as well 
Returns: 
an collection of java.io.File with the matching files 
15

Bạn có thể trả về một List thay vì một mảng và những thứ được đơn giản hơn nhiều.

public static List<File> listf(String directoryName) { 
     File directory = new File(directoryName); 

     List<File> resultList = new ArrayList<File>(); 

     // get all the files from a directory 
     File[] fList = directory.listFiles(); 
     resultList.addAll(Arrays.asList(fList)); 
     for (File file : fList) { 
      if (file.isFile()) { 
       System.out.println(file.getAbsolutePath()); 
      } else if (file.isDirectory()) { 
       resultList.addAll(listf(file.getAbsolutePath())); 
      } 
     } 
     //System.out.println(fList); 
     return resultList; 
    } 
+0

nhưng tôi muốn hợp nhất mảng –

+0

Tại sao? Ý tôi là: vấn đề của bạn là gì và tại sao bạn muốn tránh sử dụng các danh sách đang thực hiện tất cả việc hợp nhất cho bạn? –

+0

có lý do tôi buồn ngủ (mất ngủ) tại thời điểm –

Các vấn đề liên quan