网站首页 > 技术文章 正文
在程序开发中,有时会遇到字节流和字符流之间需要进行转换的可能。在java.io包中提供了两个类可以将字节流转换为字符流,它们分别是InputStreamReader和OutputStreamWriter。
OutputStreamWriter是Writer的子类,能够将一个字节输出流转换成字符输出流,方便直接写入字符,而InputStreamReader是Reader的子类,能够将一个字节输入流转换成字符输入流,方便直接读取字符。下面通过案例学习如何将字节流转换为字符流,为了提高读/写效率,通过字符缓冲流实现转换的操作,如文件5-9所示。
文件5-9 Example09.java
package com.itheima.example;
import java.io.*;
public class Example09 {
public static void main(String[] args) throws Exception {
//创建字节输入流
FileInputStream input=new FileInputStream("read.txt");
//将字节输入流转换成字符输入流
InputStreamReader streamReader=new InputStreamReader(input);
//赋予字符输入流对象缓冲区
BufferedReader bufferReader=new BufferedReader(streamReader);
//创建字节输出流
FileOutputStream output=new FileOutputStream("dest2.txt")
//将字节输出流转换成字符输出流
OutputStreamWriter streamWriter=new OutputStreamWriter(output);
//赋予字符输出流对象缓冲区
BufferedWriter bufferWriter=new BufferedWriter(streamWriter);
String line=null;
//判断是否读到文件末尾
while ((line=bufferReader.readLine()) !=null) {
bufferWriter.write(line); //输出读取到的文件
}
bufferReader.close();
bufferWriter.close();
}
}
程序运行结束后,按F5键刷新chapter05项目后打开dest2.txt文件,执行结果如图5-5所示。
在文件5-9中,实现了字节流和字符流之间的转换,将字节流转换为字符流,从而实现直接对字符的读/写。需要注意的是,在使用转换流时,只能针对操作文本文件的字节流进行转换,如果字节流操作的是图片或者音频,此时转换为字符流就会造成数据丢失。
猜你喜欢
- 2025-07-25 freemark学习(二):freemark的数据类型(1)
- 2025-07-25 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定
- 2025-07-25 《JAVA编程思想》5分钟速成:第18章(Java的IO系统)
- 2025-07-25 实战SRC漏洞挖掘全过程,流程详细【网络安全】
- 2025-07-25 Tomcat处理HTTP请求流程解析(tomcat cgi)
- 2025-07-25 Java socket详解(转)(java socket编程例子)
- 2025-07-25 全面解读FileUtil与IoUtil工具类的高级功能及应用场景
- 2025-07-25 终于有人把Git最火Java全套详细笔记(吐血放出)资料给分享出来了
- 2025-07-25 《保姆式的详解》Reactor 模式和 Java NIO
- 2025-07-25 基于TCP的网络实时聊天室(socket通信案例)
- 最近发表
-
- Qt编程进阶(63):Qt Quick高级控件的使用
- Qt编程进阶(47):QML鼠标事件处理(qt编程难不难)
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
- Qt使用教程:创建Qt Quick应用程序(三)
- QML性能优化 | 常见界面元素优化(qml布局自适应大小)
- Qt使用教程:创建移动应用程序(二)
- Qt Quick 多媒体开发播放音乐和视频
- Qt使用教程:创建Qt Quick UI表单(三)
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)