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)); } }
以上就是小编今天的分享了,希望可以帮助到大家。