Java IO: InputStreamReader和OutputStreamWriter
转载自 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相关推荐
- Java IO流之OutputStreamWriter和InputStreamReader分析
简介 OutputStreamWriter和InputStreamReader是字节流和字符流转化之间桥梁,OutputStreamWriter继承自Writer接口,而InputStreamRead ...
- JAVA IO(续)
缓冲输出流写出数据时的缓冲区问题 通过缓冲流写出的数据会被临时存入缓冲流内部的字节数组,直到数组存满数据才会真实写出一次 package io;import java.io.BufferedOutpu ...
- 1.9 Java转换流:InputStreamReader和OutputStreamWriter
正常情况下,字节流可以对所有的数据进行操作,但是有些时候在处理一些文本时我们要用到字符流,比如,查看文本的中文时就是需要采用字符流更为方便.所以 Java IO 流中提供了两种用于将字节流转换为字符流 ...
- Java基础(二十七)Java IO(4)字符流(Character Stream)
字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出 ...
- Java.io包中常用的类
Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Ja ...
- java.io.tem_从屌丝到架构师的飞越(IO流篇)-转换流
一.介绍 字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符: 转换流就是原本是字节流,但是读取到的数据是字 ...
- IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)
1.InputStreamReader 字节流通向字符的桥梁 所有已实现的接口: Closeable, Readable 直接已知子类: FileReader 将字节输入流转换为字符输入流 使用指定的 ...
- java io字符输出流_Java字符输入输出流
Java字符输入输出流 InputStreamReader可以把字节流,以指定的编码转换为字符流. OutputStreamWriter可以把字符流以指定的编码转换为字节流. 这两个类采用了适配器设计 ...
- java io字符输出流_JAVA IO 字符输入流与输出流总结说明
目录 OutputStreamWriter 用于向本地文件中写入数据 InputStreamReader 用于读取本地文件中的字节数据 FileReader 用于读取本地文件中的字节数据 FileWr ...
最新文章
- python运行不了control+shift+i_Python不支持 i ++ 语法的原因解析
- EJS 什么是EJS后缀文件 EJS怎么用
- Android热更新实现方式
- 灵魂拷问:机器学习、深度学习专业已经沦为调包专业了吗?
- AutoComplete - 自动完成插件
- 北京人文计算机学院,北京人文大学计算机信息工程学院举行元旦晚会
- 加载exe的PE信息并输出相关PE信息的一段c++代码
- TensorFlow LeNet5
- Hadoop报错:could only be replicated to 0 nodes, instead of 1
- Algorithm:数学建模大赛(CUMCM/NPMCM)之CUMCM之2006B之2006之B题《艾滋病疗法的评价及疗效的预测》
- 章草、今草、狂草是草书的三种书写表现方式,你更喜欢哪一种?
- GeoServer中使用SLD样式
- 企鹅号发布腾讯创作者社群计划 助力精品打造行业升级
- 用Python写个自动批改作业系统~
- 【CVPR 2021】Unsupervised Pre-training for Person Re-identification(UPT)
- vantUI弹出框和微信小程序的究极大坑
- http协议网站配置SSL证书实现全站https协议
- 当阳光照在海面上,当朦胧月色洒在泉水上---我在想你
- 高科技公司全线受损 中国电子企业盼政府救市
- 网络模拟和分析工具--Mahimahi的安装教程
热门文章
- 151. 翻转字符串里的单词(思路+详解)
- Mediator(中介者)--对象行为型模式
- Proxy(代理)--对象结构型模式
- 贵州大学计算机专业的导师是谁,贵州大学计算机科学与信息学院导师介绍:王以松...
- python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...
- ffmpeg加环境变量
- P3733 [HAOI2017]八纵八横(线性基/线段树分治)
- P2408 不同子串个数 SAM
- Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp
- AT2363-[AGC012C]Tautonym Puzzle【构造】