inputstreamreader java
- IT科技
- 關注:2.75W次
<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)); }}
標籤:
java
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/e9o2z6.html