2011-12-01 68 views
5

Tôi đang sử dụng bit này mã:Nhận tất cả tên tệp trong thư mục bằng JFileChooser?

fileBrowser() { 
     String toReturn = null; 
     JFileChooser Chooser = new JFileChooser(); 
     int choosen = Chooser.showOpenDialog(fileBrowser.this); 
     if (choosen == JFileChooser.APPROVE_OPTION) {   
      System.out.println(Chooser.getCurrentDirectory().toString()+"\\"+Chooser.getSelectedFile().getName()); 
     } 

    } 

Để có được tên tập tin được lựa chọn và vị trí, đó là tất cả làm việc tốt. Tôi đã tự hỏi là một bổ sung, cũng có một cách để có được tất cả các tên tập tin trong thư mục đó không? một cái gì đó như .getAllFiles() Tôi đã có một tìm kiếm xung quanh và không thể tìm thấy một?

Cảm ơn trước.

Trả lời

7

Chắc chắn, sử dụng

File[] filesInDirectory = chooser.getCurrentDirectory().listFiles(); 

Sau đó, bạn có thể lặp qua mảng:

for (File file : filesInDirectory) { 
    System.out.println(file.getName()); 
} 
+2

Sẽ không dễ dàng hơn khi chỉ sử dụng 'list()', vì OP chỉ tìm kiếm tên tệp? – mre

+0

Cảm ơn, tôi đã sử dụng danh sách() và đề xuất ở trên, chính xác những gì tôi muốn, cảm ơn rất nhiều! –

+0

@ Крысa: Nếu đó là * tất cả * anh ấy muốn làm (và tùy thuộc vào định nghĩa của mình về "tên tệp"), thì có. Nhưng thông thường bạn thực sự muốn tương tác với một đối tượng 'File' tại một thời điểm nào đó và tôi đã cố gắng dẫn dắt OP ra khỏi việc sử dụng một trung gian String. Sở thích của tôi là gắn bó với các đối tượng thực sự cho đến khi nó là thời gian để trình bày. Ngoài ra, nếu anh ta muốn lọc ra các thư mục sạch hơn bằng cách sử dụng một 'FileFilter' hơn là một' FilenameFilter', và nó chỉ có sẵn cho 'listFiles()'. –

4

Vâng, có File.list(). Thao tác này sẽ liệt kê tất cả các tệp theo tên của chúng từ thư mục được chỉ định (ví dụ: File). Nhưng điều này cũng sẽ trả về tên thư mục. Để phá vỡ điều đó, hãy sử dụng phương thức File.list(FilenameFilter filter) khác sẽ cho phép bạn lọc ra các thư mục khỏi danh sách.

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