<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
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)); }}