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

import java.io.*;
class InputStreamReaderDemo {public static void transReadNoBuf() throws IOException {/*** 没有缓冲区,只能使用read()方法。*///读取字节流//InputStream in = System.in;//读取键盘的输入。InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。//将字节流向字符流的转换。要启用从字节到字符的有效转换,//可以提前从底层流读取更多的字节.InputStreamReader isr = new InputStreamReader(in);//读取//综合到一句。//InputStreamReader isr = new InputStreamReader(//new FileInputStream("D:\\demo.txt"));char []cha = new char[1024];int len = isr.read(cha);System.out.println(new String(cha,0,len));isr.close();}public static void transReadByBuf() throws IOException {/*** 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。*///读取字节流//InputStream in = System.in;//读取键盘上的数据InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。//将字节流向字符流的转换。InputStreamReader isr = new InputStreamReader(in);//读取//创建字符流缓冲区BufferedReader bufr = new BufferedReader(isr);//缓冲//BufferedReader bufr = new BufferedReader(//new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。/*int ch =0;ch = bufr.read();System.out.println((char)ch);*/String line;while((line = bufr.readLine())!=null){System.out.println(line);}isr.close();}
}

字节流通向字符流的桥梁:InputStreamReader相关推荐

  1. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  2. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  3. 从字节流到字符流的装换

    引用地址:https://blog.csdn.net/lzh_86/article/details/78107597 System.in的类型可以归结为节点流.字节流.输入流: InputStream ...

  4. Java语言基础(IO流2(字节流、字符流))

    Java语言基础 IO流 字节流 可以读写任何类型的文件,比如:音频.视频 .文本文件 字节流的抽象基类: 字节输入流:InputStream 字节输出流:OutputStream 我们发现Input ...

  5. JAVA File类、IO流体验与简介(字节流、字符流、序列流、打印流、编码、递归)

    1. File类 1.1. File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动 ...

  6. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

  7. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

    前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...

  8. Java IO 字节流、字符流详解

    1. 字节流与字符流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流 ...

  9. Java基础---认识IO流---字节流、字符流---缓冲流---转换流

    一.认识IO流 I/O就是用于设备之间进行数据交互的对象所属的类型 IO流的体系结构:根据分类,有四种流对象类型 字节流:可以直接操作字节信息的流对象 字节输入流:InputStream 字节输出流: ...

最新文章

  1. 【转】PendingIntent的总结
  2. 深入剖析RocketMQ源码-NameServer
  3. java把字符串变代码,Java/javaScript将字符串转变成可执行的语句
  4. html与xml头部你懂吗?
  5. Android中shape的使用
  6. 111. Leetcode 300. 最长递增子序列 (动态规划-子序列问题)
  7. Vue_异步加载_vue-resource(不再维护)
  8. MongoDB 数据类型查询——$type使用
  9. JavaScript学习笔记:常量,枚举,宏定义
  10. 使用Maven命令安装jar包到repo中
  11. linux 测试网络端口通不通_能否使用一台矢量网络分析仪来控制多台 E5092A 以增加测试端口数?...
  12. java 命令参数详解
  13. Host是什么?如何设置host文件?
  14. [置顶] [VS2010]逸雨清风 永久稳定音乐外链生成软件V0.1
  15. 增值税发票查验平台网站时被拦截了怎么办?
  16. Bitmap的加载和Cache
  17. 小猫特别聪明的shoow
  18. 怎么用ai做出适量插画_8个步骤,快速绘制矢量插画
  19. 极客日报:宿华不再担任快手CEO,程一笑接任;微软市值重登全球第一;Bootstrap 4.6.1发布
  20. Linux 下如何添加一个普通用户,并给予用户root权限

热门文章

  1. 最新战火互娱JS逆向分析实战教程
  2. 计算机专业创新项目,计算机专业本科生的创新思维
  3. java sqlserver 遍历_mysql和sqlserver循环插入数据
  4. Python 3.5/3.6 windows 7 安装
  5. php验证码只有图片没有文字_有没有免费好用的图片文字识别工具?在线就能使用超准确...
  6. html ul高度自适应,如何让div中的ul元素自适应
  7. JDK8新特性(十一)之收集Stream流中的结果
  8. 为什么建议使用count(*)来统计数据行数
  9. cipher java aes 模式_java – 为什么我的AES Cipher在init的DECRYPT_MODE上抛出一个InvalidKeyException...
  10. 字典树实现_【Leetcode每日打卡】单词的压缩编码 Trie(字典树)入门