2013-05-18 49 views
0

爲什麼這裏的代碼是從messageBox域獲得消息後使用PrintWriter類的flush()方法....?我無法理解,爲什麼要使用PrintWriter類的flush()方法?

public void connectToSocket() { 

    try { 
     Socket socket = new Socket("localhost", 80); 
     PrintWriter writer = new PrintWriter(socket.getOutputStream); 
     System.out.println("Connected Successfully"); 
    } 
    catch(IOException ex) {  
     ex.printStackTrace(); 
    } 
} 

public class sendMessageListener implements ActionListener {  
    try {  
     writer.println(messageBox.getText()); 
     writer.flush(); 
    } 
    catch(IOException ex) {  
     ex.printStackTrace(); 
    } 
} 
+0

刷新緩衝區。你有沒有考慮閱讀Javadoc? – EJP

回答

1

PrintWriter的默認構造函數不會自動刷新其內容。這意味着它使用內部緩衝區,因爲寫入操作很昂貴。

如果要立即將緩衝區寫入流,只需調用flush方法即可。

如果你在這種情況下使用的構造函數自動沖洗

PrintWriter writer = new PrintWriter(socket.getOutputStream,true); 

你不會需要調用flush方法,因爲它會盡快清空內部緩衝區作爲新行命令(的println() ) 叫做。

+0

謝謝,現在我明白了:) @SerkanArıkuşu –

相關問題