通常接触到字节流和字符流,但是有一个流是这两个流的桥梁,inputStreamReader

字符流的结构如下

可以看到inputStreamReader是继承Reader ,它的子类是FileReader ,但Reader(),FileReader()构造方法接受的是File类型的文件路径,

但是InputStreamReader()接受的是字节流!,所以他是一个桥梁,接受字节流,转为字符流

InputStreamReader是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。

每个调用InputStreamReader的read()方法之一可能会导致从底层字节输入流读取一个或多个字节。 为了使字节有效地转换为字符,可以从底层流读取比满足当前读取操作所需的更多字节。

为了最大的效率,请考虑在BufferedReader中包装一个InputStreamReader。 例如:

  BufferedReader in
= new BufferedReader(new InputStreamReader(System.in)); 在TCP传输中,我们通过套接字的方法socket.getOutPutStream(),可以拿到字符输出/输入流,
但是如果要写入文件显然字符流比较方便,这时候我们通过转换字节流实现,
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

转换流 InputStreamReader的更多相关文章

  1. (25)IO流之转换流InputStreamReader和OutputStreamWriter

    InputStreamReader:字节到字符的桥梁. OutputStreamWriter:字符到字节的桥梁. 它们有转换作用,而本身又是字符流.所以在构造的时候,需要传入字节流对象进来. 构造函数 ...

  2. JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律

    JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...

  3. 转换流InputStreamReader & OutputStreamWriter

    转换流InputStreamReader & OutputStreamWriter 比如当使用FileReader读取文件时,可以读取IDE默认的UTF-8编码的文件,但是当有一个文件是GBK ...

  4. 转换流--InputStreamReader ,OutputStreamWriter

    BufferedReader 字符流,只能装饰字符流,不能装饰字节流.有个重要且好用的方法是readLine()整行读取字符. 但是InputStream是字节流,没有resdLine方法,那么字节流 ...

  5. Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter

    类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...

  6. io流之转换流InputStreamReader、OutputStreamWriter

    例子程序: package io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File ...

  7. [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)

    一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStre ...

  8. 34.3 转换流 InputStreamReader OutStreamReader

    转换流: 把字节输出流转换成字符输出流 标准输入输出流:传输的对象是字节流 System.in . System.out 标准输入输出流 public static final InputStream ...

  9. Java IO 流 -- 转换流: InputStreamReader OutputStreamWriter

    java 中 转换流是以字符流的形式操作字节流,需要注意一下两点: 1.操作内容必须是纯文本 2.指定字符集避免乱码 操作控制台输入输出: try (BufferedReader br = new B ...

随机推荐

  1. 浏览器中打开PDF链接

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. Jenkins自动构建gitlab项目(jenkins+maven+giltlab+tomcat)

    环境准备: System:CentOS 7.3 (最小化安装) JDK: 8u161 (1.8_161) tomcat: 8.5.29 Jenkins: Jenkins 2.107.1 Gitlab: ...

  3. 老男孩Python九期全栈学习笔记3

    day3 1.上周五内容回顾 格式化输出:%s %d %%:输出% 编码: ASCII码只能显示英文.数字和特殊字符. Unicode:万国码,最开始使用16位表示一个字符,中文不够,后来使用4个字节 ...

  4. MyBatis动态创建表

    转载请注明出处:https://www.cnblogs.com/Joanna-Yan/p/9187538.html 项目中业务需求的不同,有时候我们需要动态操作数据表(如:动态建表.操作表字段等).常 ...

  5. 数据仓库之Data Vault模型总结

    一,Data Vault模型有几个主要的组件,这里先总结一下: 1.Hub组件,是一个数据表,用于记录在业务应用中常用到的业务实体键值,如员工ID,发票号.客户编号.车辆号等. 表内包括几个关键字段: ...

  6. mysql innodb 唯一键里的字段为什么不能为NULL

    mysql 唯一键失效 CREATE TABLE `studnet_unique` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100 ...

  7. Spring AOP 的实现机制

    作者:大名Dean鼎 http://www.importnew.com/28342.html AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充 ...

  8. 字符编码 ASCII、Unicode和UTF-8的关系

    摘抄自廖雪峰 教程 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机 ...

  9. 8款非常不错的.Net反编译利器

    本人搜集了下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Refle ...

  10. 【推荐】HTML5 Word Cloud——中文词云

    在线工具: http://timdream.org/wordcloud/# 源码: https://github.com/timdream/wordcloud