inputstreamreader是什么,讓我們一起了解一下?
InputStreamReader類是從字節流到字符流的橋接器:它使用指定的字符集讀取字節并將它們解碼為字符。 它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集。每次調用一個InputStreamReader的read()方法都可能導致從底層字節輸入流中讀取一個或多個字節。
字節流到字符流的橋梁怎么理解?
1、計算機存儲的單位是字節,如盡管txt文本中有中文漢字這樣的字符,但是對計算機而言,其是字節形式存在的。
2、字節流讀取是單字節讀取,但是不同字符集解碼成字符需要不通過個數,因此字節流讀取會報錯。
3、 那么就需要一個流把字節流讀取的字節進行緩沖而后在通過字符集解碼成字符返回,因而形式上看是字符流。
4、InputStreamReader流就是起這個作用,實現從字節流到字符流的轉換。
實戰操作,具體代碼如下:
package?數據流; import?java.io.IOException; import?java.io.InputStream; import?java.io.InputStreamReader; import?java.net.MalformedURLException; import?java.net.URL; public?class?Test_InputStreamReader?{ ????/* ?????*?得到字符流前需先有字節流 ?????*/ ????private?String?getStream(String?url){ ????????try?{ ????????????//得到字節流 ????????????InputStream?in?=?new?URL(url).openStream(); ????????????//將字節流轉化成字符流,并指定字符集 ????????????InputStreamReader?isr?=?new?InputStreamReader(in,"UTF-8"); ????????????String?results?=?""; ????????????int?tmp; ????????????while((tmp?=?isr.read())?!=?-1){ ????????????????results?+=?(char)tmp; ????????????} ????????????return?results; ????????}?catch?(MalformedURLException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????}?catch?(IOException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????} ????????return?null; ????} ????/** ?????*?@param?args ?????*/ ????public?static?void?main(String[]?args)?{ ????????//?TODO?Auto-generated?method?stub ????????String?URL?=?"http://www.baidu.com"; ????????Test_InputStreamReader?test?=?new?Test_InputStreamReader(); ????????System.out.println(test.getStream(URL)); ????} }
以上就是小編今天的分享了,希望可以幫助到大家。