字节流通向字符流的桥梁:InputStreamReader-阿里云开发者社区

开发者社区> shy丶gril> 正文

字节流通向字符流的桥梁:InputStreamReader

简介:
+关注继续查看
public class InputStreamReader
extends Reader

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:

 BufferedReader in
   = new BufferedReader(new InputStreamReader(System.in));


构造方法摘要
InputStreamReader(InputStream in) 
          创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs) 
          创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec) 
          创建使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 
          创建使用指定字符集的 InputStreamReader。

 

方法摘要
 void close() 
          关闭该流并释放与之关联的所有资源。
 String getEncoding() 
          返回此流使用的字符编码的名称。
 int read() 
          读取单个字符。
 int read(char[] cbuf, int offset, int length) 
          将字符读入数组中的某一部分。
 boolean ready() 
          判断此流是否已经准备好用于读取。

例:Demo

[java] view plain copy
 print?
  1. import java.io.*;  
  2. class InputStreamReaderDemo {  
  3.   public static void transReadNoBuf() throws IOException {  
  4.     /** 
  5.      * 没有缓冲区,只能使用read()方法。 
  6.      */  
  7.     //读取字节流  
  8.     //InputStream in = System.in;//读取键盘的输入。  
  9.     InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。  
  10.     //将字节流向字符流的转换。要启用从字节到字符的有效转换,  
  11.     //可以提前从底层流读取更多的字节.  
  12.     InputStreamReader isr = new InputStreamReader(in);//读取  
  13.     //综合到一句。  
  14.     //InputStreamReader isr = new InputStreamReader(  
  15.     //new FileInputStream("D:\\demo.txt"));  
  16.         
  17.     char []cha = new char[1024];  
  18.     int len = isr.read(cha);  
  19.     System.out.println(new String(cha,0,len));  
  20.     isr.close();  
  21.   
  22.   }  
  23.   public static void transReadByBuf() throws IOException {  
  24.     /** 
  25.      * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。 
  26.      */  
  27.     //读取字节流  
  28.     //InputStream in = System.in;//读取键盘上的数据  
  29.     InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。  
  30.     //将字节流向字符流的转换。  
  31.     InputStreamReader isr = new InputStreamReader(in);//读取  
  32.     //创建字符流缓冲区  
  33.     BufferedReader bufr = new BufferedReader(isr);//缓冲  
  34.     //BufferedReader bufr = new BufferedReader(  
  35.     //new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。  
  36.       /*int ch =0; 
  37.     ch = bufr.read(); 
  38.     System.out.println((char)ch); 
  39.     */  
  40.     String line;  
  41.     while((line = bufr.readLine())!=null){  
  42.       System.out.println(line);  
  43.     }  
  44.     isr.close();  
  45.   }  
  46. }  



转载:http://blog.csdn.net/chaoyu168/article/details/49663129

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一双慧眼识别字节/字符流区别 | 带你学《Java语言高级特性》之五十七
Java文件IO操作中常用的流处理类的基本信息和相关操作我们已经全部了解过,现在让我们来通过输出操作的复习总结概况字节流和字符流之间的区别吧。
709 0
掌握字符输入流:Reader | 带你学《Java语言高级特性》之五十六
学习过字符输出流相关的内容后,本节将为读者介绍与之对应的字符输入流的相关内容和使用方法。
675 0
借助转换流打通字节/字符流的关联 | 带你学《Java语言高级特性》之五十八
由于字节流和字符流各有各的优势,在大多数场景中我们往往可以使用转换流InputStreamReader和OutputStreamWriter实现两类流式数据的相互转换,本节将为读者详细介绍转换流。
655 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3956 0
java-IO-字节流与和字符流
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。
933 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10712 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
2901 0
+关注
1878
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载