2017-09-01 206 views
1

我有多個基於Java的BufferedReader對象。我已經聲明瞭許多用於讀取每個單獨文件的BufferedReader對象,但是問題是如何才能讓一個對象僅用於讀取文件,以便每個循環都使用for?這裏是我的示例源代碼,最好減少它。只使用一個BufferedReader對象來讀取java中的多個文件

FileInputStream f1 = new FileInputStream(filepath); 
BufferedReader b1 = new BufferedReader(new InputStreamReader(f1)); 

FileInputStream f2 = new FileInputStream(filepath); 
BufferedReader b2 = new BufferedReader(new InputStreamReader(f2)); 

FileInputStream f3 = new FileInputStream(filepath); 
BufferedReader b3 = new BufferedReader(new InputStreamReader(f3)); 
+1

當你推廣代碼,以減少重複,想想有什麼變化。在這種情況下,文件名更改。通過創建一個方法來重構代碼,該方法執行'任務'並將其傳遞'改變的事物'。 – Matt

+0

你在問什麼?如何編寫'for'循環? –

+0

我在問什麼是減少重複代碼的最佳方法,如BufferedReader的多個實例? –

回答

2

您創建一個小的輔助方法,像

private List<String> readFile(whatever) 

,然後調用一個循環,方法。 BufferedReader的想法是包裝一個的東西。考慮重置那件事是沒有意義的。使用類似於:

for (String fileName : fileNames) { 
    fileContents.addAll(readFile(fileName)); 
} 

但是,該循環的確切性質和該輔助方法的理想設計取決於您的要求的細節。

+0

在我看來,您在方法聲明中絕對正確。其實,我的問題是如何做一個循環,以便分別讀取每個文件。謝謝。 –

+0

查看我的更新。 – GhostCat

1

使用try-WITH-資源如下(上java8):REF

List<String> filePathList = Arrays.asList("./a.txt", "./b.txt"); 
    filePathList.forEach(filePath -> { 
     try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));){ 
      // Do something with bufferedReader 
      // bufferedReader will be cleaned automatically in the end of try-catch block 
     }catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
    }); 
相關問題