PrintWriter和bufferedreader的作用是什么
PrintWriter包裝成打印流就我的理解是把字節(jié)流轉(zhuǎn)為字符流吧?可既然輸出的是字符流,為什么另一端接收時(shí)依然要用inputstream接收字節(jié)流然后還要?jiǎng)?chuàng)建個(gè)bufferedreader把字節(jié)流轉(zhuǎn)成字符流呢
PrintWriter包裝成打印流就我的理解是把字節(jié)流轉(zhuǎn)為字符流吧?可既然輸出的是字符流,為什么另一端接收時(shí)依然要用inputstream接收字節(jié)流然后還要?jiǎng)?chuàng)建個(gè)bufferedreader把字節(jié)流轉(zhuǎn)成字符流呢
2016-06-21
舉報(bào)
2016-06-21
1. 為什么要用PrinterWriter?
因?yàn)槲覀儗懗绦虻臅r(shí)候,往Socket里寫數(shù)據(jù),寫的都是文本,都是字符,所以PrinterWriter用于程序員寫入數(shù)據(jù)。因?yàn)镻rinterWriter是包裝的OutputStream,底層實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)臅r(shí)候,會(huì)把我們寫入的字符轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),就是字節(jié)流,所以傳輸?shù)臅r(shí)候都是字節(jié)流傳輸。
2. 為什么要用InputStream接收?
上面講到了,底層傳輸?shù)臅r(shí)候,都是字節(jié)流,所以要用InputStream讀取,還要用BufferedReader轉(zhuǎn)換成字符流,也是為了方便程序員讀取,可辨識(shí)。
如果只是單純的為了數(shù)據(jù)傳輸?shù)脑?,完全不需要將字?jié)流轉(zhuǎn)換成字節(jié)流。