2013-07-18 36 views
7

Tôi đi theo này question:Java - Đọc nhiều txt file vào một thư mục và xử lý chúng

Bây giờ trong trường hợp của tôi, tôi có 720 tập tin có tên theo cách này: "dom 24 tháng 3 2013_00.50.35_128.txt", mỗi tệp có ngày và giờ khác nhau. Trong giai đoạn thử nghiệm tôi đã sử dụng Máy quét, với một tệp txt cụ thể, để thực hiện một số thao tác trên nó:

Máy quét s = new Máy ​​quét (tệp mới ("stuff.txt"));

Câu hỏi của tôi là:

Làm thế nào tôi có thể tái sử dụng máy quét và đọc tất cả 720 tập tin mà không cần phải thiết lập tên chính xác trên máy quét?

Cảm ơn

+0

thấy ở đây http://stackoverflow.com/questions/189094/how-to-scan-a-folder-in-java – sotix

+0

Bạn có thể đọc tất cả các tệp trong thư mục hoặc bạn có nhiều tệp mà bạn không muốn đọc với các lược đồ đặt tên khác nhau trong thư mục không? –

+1

Bạn không thể. Một máy quét mới sẽ được tạo cho mỗi tệp. –

Trả lời

14

Giả sử bạn có tất cả các tập tin trong một nơi:

File dir = new File("path/to/files/"); 

for (File file : dir.listFiles()) { 
    Scanner s = new Scanner(file); 
    ... 
    s.close(); 
} 

Lưu ý rằng nếu bạn có bất kỳ tập tin mà bạn không muốn bao gồm, bạn có thể cho một cuộc tranh luận listFiles()FileFilter để lọc chúng ra.

+0

Có, tất cả các tệp đều nằm trong cùng một thư mục. – alessandrob

+2

Chết tiệt, bạn chỉ cần đánh tôi với nó :) 1 để đánh tôi với câu trả lời –

+2

+1 để đóng máy quét của bạn. –

6

Có, tạo đối tượng tệp của bạn bằng cách trỏ đối tượng đó vào một thư mục rồi liệt kê các tệp của thư mục đó.

File dir = new File("Dir/ToYour/Files"); 

if(dir.isDir()) { 
    for(File file : dir.listFiles()) { 
     if(file.isFile()) { 
     //do stuff on a file 
     } 
    } 
} else { 
    //do stuff on a file 
} 
1
File file = new File(folderNameFromWhereToRead); 

    if(file!=null && file.exists()){ 
     File[] listOfFiles = file.listFiles(); 

     if(listOfFiles!=null){ 

      for (int i = 0; i < listOfFiles.length; i++) { 
       if (listOfFiles[i].isFile()) { 
         // DO work 
       } 
      } 
     } 
    } 
+0

Tôi không có chuyên gia, nhưng tôi nghĩ rằng 'if (listOfFiles! = Null)' là không cần thiết. Bạn vừa tạo 'listOfFiles' để làm thế nào nó có thể là null? –

+0

Ughh .. cùng với 'if (file! = Null)' ... bạn đang kiểm tra xem một tham chiếu đối tượng tồn tại mà bạn vừa thực hiện trước khi thử nghiệm! –

+0

Kiểm tra Null trên 'lisOfFiles' là không sao (có thể xảy ra nếu đường dẫn tồn tại nhưng là một tệp) nhưng trên tệp' không bắt buộc. 1 cho kiểm tra 'isFile()'. –

3

Bạn có thể thử này theo cách này

File folder = new File("D:\\DestFile"); 
File[] listOfFiles = folder.listFiles(); 

for (File file : listOfFiles) { 
if (file.isFile()&&(file.getName().substring(file.getName().lastIndexOf('.')+1).equals("txt"))) { 
    // Scanner 
    } 
} 
+0

+1 cho 'isFile()' kiểm tra. –

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