2015-06-25 106 views
0

我必須採用這種方法。一個從文件讀取,另一個寫入文件。如果要看它們,它們只在局部變量上有所不同:java提取緩衝讀取器和緩衝寫入器的方法

public method1 wtite() { 
    try { 
    BufferedWriter out = new BufferedWriter(new FileWriter(file, true)); 
    } catch (here come catch cases equal in two methods) 
} 

public method1 read() { 
    try { 
    BufferedReader in = new BufferedReader(new FileReader(file)); 
    } catch (here come catch cases equal in two methods) 
} 

我想從兩者中提取單個方法。取決於傳入的對象是什麼:打開文件或關閉它。 Smth像這樣:

public fileIO(??? io) { 
    try{ 
    //read or write 
    } catch//put the same code here 
} 

是否可以在同一個方法下結合Writer和Reader?

+0

沒有,沒有辦法統一閱讀和寫作。但是你可能想要聲明你的方法拋出IOException而不是捕獲它。 – VGR

+0

我不認爲這會是一個好主意,並不值得每個5行。但是,如果在創建BufferedReader/Writer之前或之後有大量常見的代碼片段,則可以將這些片段分解爲函數,並在/之前調用函數。 –

+0

* Roberto Attias *你能舉個例子嗎?請... – ovod

回答

0

Excract公用部分進入方法:

void handle(...) { 
    // handle exception 
} 

public void read(...) { 
    try { 
    ... 
    } catch (...) { 
     handle(...); // use defined method 
    } 
} 
public void write(...) { 
    try { 
    ... 
    } catch (...) { 
     handle(...); // and here 
    } 
}