PrintWriter 的Write()方法和println()方法有何細微的區別

關於某個問題:

在服務器端和客戶端產生一個Socket 後,

兩邊各自用getIputStream()和getOutputStream()方法,構造各自的輸入輸出流。

其中服務器端的Socket ss

BufferedReader is=new BufferedReader(new InputStreamReader(ss.getInputStream()) );
PrintWriter os=new PrintWriter (new OutputStreamWriter(ss.getOutputStream()) );

os.writer(“一個亂七八糟的字符串”);

客戶端的Socket cs

BufferedReader is=new BufferedReader(new InputStreamReader(cs.getInputStream()) );
PrintWriter os=new PrintWriter (new OutputStreamWriter(cs.getOutputStream()) );

System.out.println(is.readLine());

(當然這兩個肯定不是一個類文件中噢!)

按理說,應該是ss的 os對應着cs的 is. 爲什麼在服務器端寫入了,在客戶端這邊沒法讀出來呢?

另外,如果服務器端用os.println(“字符串”);就好使了。

請問這是問什麼?

這裏寫圖片描述

源碼分析根本原因:

write:
這裏寫圖片描述

而println(舉個例 其他print也是一樣道理):
這裏寫圖片描述

————print
這裏寫圖片描述

————println(重點來了)
這裏寫圖片描述

這裏寫圖片描述

所以應了這個回答:
可以確定就是flush和\r\n的問題

不信?
這裏寫圖片描述

這兒還真刷新和換行缺一都不可以額~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章