转载自  Java IO: InputStreamReader和OutputStreamWriter

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

本章节将简要介绍InputStreamReader和OutputStreamWriter。细心的读者可能会发现,在之前的文章中,IO中的类要么以Stream结尾,要么以Reader或者Writer结尾,那这两个同时以字节流和字符流的类名后缀结尾的类是什么用途呢?简单来说,这两个类把字节流转换成字符流,中间做了数据的转换,类似适配器模式的思想。

InputStreamReader

原文链接

InputStreamReader会包含一个InputStream,从而可以将该输入字节流转换成字符流,代码例子:

InputStream inputStream = new FileInputStream("c:\\data\\input.txt");Reader reader = new InputStreamReader(inputStream);int data = reader.read();while(data != -1){char theChar = (char) data;data = reader.read();}reader.close();

注意:为了清晰,代码忽略了一些必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理。

read()方法返回一个包含了读取到的字符内容的int类型变量(译者注:0~65535)。代码如下:

int data = reader.read();

你可以把返回的int值转换成char变量,就像这样:

char aChar = (char) data; //译者注:这里不会造成数据丢失,因为返回的int类型变量data只有低16位有数据,高16位没有数据

如果方法返回-1,表明Reader中已经没有剩余可读取字符,此时可以关闭Reader。-1是一个int类型,不是byte或者char类型,这是不一样的。

InputStreamReader同样拥有其他可选的构造函数,能够让你指定将底层字节流解释成何种编码的字符流。例子如下:

InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader reader = new InputStreamReader(inputStream, "UTF-8");

注意构造函数的第二个参数,此时该InputStreamReader会将输入的字节流转换成UTF8字符流。

OutputStreamWriter

原文链接

OutputStreamWriter会包含一个OutputStream,从而可以将该输出字节流转换成字符流,代码如下:

OutputStream outputStream = new FileOutputStream("c:\\data\\output.txt");
Writer writer = new OutputStreamWriter(outputStream);
writer.write("Hello World");
writer.close();

OutputStreamWriter同样拥有将输出字节流转换成指定编码的字符流的构造函数。

Java IO: InputStreamReader和OutputStreamWriter相关推荐

  1. Java IO流之OutputStreamWriter和InputStreamReader分析

    简介 OutputStreamWriter和InputStreamReader是字节流和字符流转化之间桥梁,OutputStreamWriter继承自Writer接口,而InputStreamRead ...

  2. JAVA IO(续)

    缓冲输出流写出数据时的缓冲区问题 通过缓冲流写出的数据会被临时存入缓冲流内部的字节数组,直到数组存满数据才会真实写出一次 package io;import java.io.BufferedOutpu ...

  3. 1.9 Java转换流:InputStreamReader和OutputStreamWriter

    正常情况下,字节流可以对所有的数据进行操作,但是有些时候在处理一些文本时我们要用到字符流,比如,查看文本的中文时就是需要采用字符流更为方便.所以 Java IO 流中提供了两种用于将字节流转换为字符流 ...

  4. Java基础(二十七)Java IO(4)字符流(Character Stream)

    字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出 ...

  5. Java.io包中常用的类

    Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Ja ...

  6. java.io.tem_从屌丝到架构师的飞越(IO流篇)-转换流

    一.介绍 字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符: 转换流就是原本是字节流,但是读取到的数据是字 ...

  7. IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)

    1.InputStreamReader 字节流通向字符的桥梁 所有已实现的接口: Closeable, Readable 直接已知子类: FileReader 将字节输入流转换为字符输入流 使用指定的 ...

  8. java io字符输出流_Java字符输入输出流

    Java字符输入输出流 InputStreamReader可以把字节流,以指定的编码转换为字符流. OutputStreamWriter可以把字符流以指定的编码转换为字节流. 这两个类采用了适配器设计 ...

  9. java io字符输出流_JAVA IO 字符输入流与输出流总结说明

    目录 OutputStreamWriter 用于向本地文件中写入数据 InputStreamReader 用于读取本地文件中的字节数据 FileReader 用于读取本地文件中的字节数据 FileWr ...

最新文章

  1. python运行不了control+shift+i_Python不支持 i ++ 语法的原因解析
  2. EJS 什么是EJS后缀文件 EJS怎么用
  3. Android热更新实现方式
  4. 灵魂拷问:机器学习、深度学习专业已经沦为调包专业了吗?
  5. AutoComplete - 自动完成插件
  6. 北京人文计算机学院,北京人文大学计算机信息工程学院举行元旦晚会
  7. 加载exe的PE信息并输出相关PE信息的一段c++代码
  8. TensorFlow LeNet5
  9. Hadoop报错:could only be replicated to 0 nodes, instead of 1
  10. Algorithm:数学建模大赛(CUMCM/NPMCM)之CUMCM之2006B之2006之B题《艾滋病疗法的评价及疗效的预测》
  11. 章草、今草、狂草是草书的三种书写表现方式,你更喜欢哪一种?
  12. GeoServer中使用SLD样式
  13. 企鹅号发布腾讯创作者社群计划 助力精品打造行业升级
  14. 用Python写个自动批改作业系统~
  15. 【CVPR 2021】Unsupervised Pre-training for Person Re-identification(UPT)
  16. vantUI弹出框和微信小程序的究极大坑
  17. http协议网站配置SSL证书实现全站https协议
  18. 当阳光照在海面上,当朦胧月色洒在泉水上---我在想你
  19. 高科技公司全线受损 中国电子企业盼政府救市
  20. 网络模拟和分析工具--Mahimahi的安装教程

热门文章

  1. 151. 翻转字符串里的单词(思路+详解)
  2. Mediator(中介者)--对象行为型模式
  3. Proxy(代理)--对象结构型模式
  4. 贵州大学计算机专业的导师是谁,贵州大学计算机科学与信息学院导师介绍:王以松...
  5. python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...
  6. ffmpeg加环境变量
  7. P3733 [HAOI2017]八纵八横(线性基/线段树分治)
  8. P2408 不同子串个数 SAM
  9. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
  10. AT2363-[AGC012C]Tautonym Puzzle【构造】