[英]PrintWriter and OutputStream for a simple client server socket program
我一直在關注有關Java套接字編程的本教程(dateserver):
http://cs.lmu.edu/~ray/notes/javanetexamples/
這是我不明白的代碼:
try {
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.println(new Date().toString());
}
PrintWriter在這里做什么? 為什么我們需要將參數設置為“ true”? 我想首先我們為套接字啟用outputstream(通過使其為true
),然后使用out.println
將日期作為outputstream發送,我的假設對嗎?
PrintWriter
在這里做什么? 為什么我們需要將參數設置為“ true”? 我想首先我們為套接字啟用輸出流(通過使其為真),然后使用out.println將日期作為輸出流發送,我的假設對嗎?
您的假設是錯誤的。 在下面閱讀有關它的更多信息。
new PrintWriter(socket.getOutputStream(), true);
PrintWriter的 JavaDoc指出:
從現有的
OutputStream
創建一個新的PrintWriter
。 這個便利的構造函數創建必要的中間OutputStreamWriter
,它將使用默認字符編碼將字符轉換為字節。
在這里, PrintWriter
流連接到客戶端/服務器的輸出流,這意味着由Print writer寫入的任何數據都將發送到客戶端/服務器。
這里的true
表示一旦調用了新的行方法(例如println()
, printf()
或format()
或在字符串中找到任何換行符('\\ n'),就會自動從輸出緩沖區中刷新數據。 在這種情況下,您無需手動調用flush()
方法。
從Javadocs開始, PrintWriter
類“將格式化的對象表示形式打印到文本輸出流中”。 在這種情況下,它將日期打印到連接到套接字的輸出流中。
構造函數中的true
表示對out.println(new Date().toString())
后續調用將自動刷新輸出流的緩沖區,這意味着它將強制將字符串寫入流,而不是將字符串存儲在臨時緩沖區。
創建PrintWriter對象以寫入OutputStream對象,true用於刷新流,請在以下API中檢查構造函數: http : //docs.oracle.com/javase/7/docs/api/java/io/ PrintWriter.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.