前面提到IO流可分为字节流和字符流,有时字节流和字符流之间也需要进行转换。在JDK中提供了两个类可以将字节流转换为字符流,它们分别是InputStreamReader和OutputStreamWriter。

转换流也是一种包装流,其中OutputStreamWriter是Writer的子类,它可以将一个字节输出流包装成字符输出流,方便直接写入字符,而InputStreamReader是Reader的子类,它可以将一个字节输入流包装成字符输入流,方便直接读取字符。通过转换流进行数据读写的过程如图所示。

接下来通过一个案例来学习如何将字节流转为字符流,为了提高读写效率,可以通过BufferedReader和BufferedWriter对转换流进行包装,具体代码如例所示。import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

public class IOTest {

public static void main(String[] args) {

try {

FileInputStream in = new FileInputStream("D:/example.txt"); // 创建字节输入流

InputStreamReader isr = new InputStreamReader(in);

// 将字节流输入转换成字符输入流

BufferedReader br = new BufferedReader(isr); // 对字符流对象进行包装

FileOutputStream out = new FileOutputStream("D:/example.txt");

// 将字节输出流转换成字符输出流

OutputStreamWriter osw = new OutputStreamWriter(out);

BufferedWriter bw = new BufferedWriter(osw); // 对字符输出流对象进行包装

String line;

while ((line = br.readLine()) != null) { // 判断是否读到文件末尾

bw.write(line); // 输出读取到的文件

}

br.close();

bw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

例实现了字节流和字符流之间的转换,将字节流转换为字符流,从而实现直接对字符的读写。需要注意的是,在使用转换流时,只能针对操作文本文件的字节流进行转换,如果字节流操作的是一张图片,此时转换为字符流就会造成数据丢失。

java file转输入流_Java转换流相关推荐

  1. java切割输入流_Java分割流,对象流,参与序列化,分割读取文件,对象输入或输出流等【诗书画唱】...

    自己写的题目:用分割流把一个Java文件分割读取,打印出每次读取的内容,要求每次读取打印500个字节. package fenGeLiu; import java.io.*; public class ...

  2. java切割输入流_java IO流之文件切割两例(含Properties 用法)

    package cn.itcast.io.p1.splitfile; import java.io.File; import java.io.FileInputStream; import java. ...

  3. Java学习总结:43(转换流)

    转换流 字节流和字符流的转换可以通过InputStreamReader.OutputStreamWriter两个类转换,下面是这两个类的继承结构和构造方法 名称 定义构造 构造方法 InputStre ...

  4. 基于java洗浴中心管理系统_Java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. java io流填空题,java面试题选择题_java,Io流面试题和选择题

    Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象.下面就由小编为大家介绍一下java Io流面试题和选择题的文章,欢迎阅读. java ...

  6. java file rename 失败_java File renameTo 踩坑---windows vs linux

    Java File renameTo 方法 Windows Linux 下的差异: window : 1 在关闭源文件之前,进行重命名操作,返回 false,重命名失败: 2 目标文件存在时,返回fa ...

  7. java字符的输入流_Java:字节流和字符流(输入流和输出流)

    InputStream是抽象基类,所以它不可以创建对象,但它可以用来"接口化编程",因为大部分子类的函数基类都有定义,所以利用基类来调用函数. FileInputStream是用来 ...

  8. java io框架图_Java IO流体系继承结构图解析

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

  9. java file 网络文件_Java 网络文件传输

    读者范围: 本文是一篇简短入门文章.本文假设读者对Java的IO系统和Java的网络系统有所了解. 正文: 关于文件传输的问题,实际也是一种IO读写的基本问题.对于网络而言也是一种IO读写问题.因此所 ...

最新文章

  1. alert()的功能_功能强大的Flutter 视频播放插件
  2. cmi编码实验_cmi编译码实验报告.docx
  3. IntelliJ IDEA 配置 JDK
  4. 文件操作(上传,下载,限制)
  5. 数据库热备份 Xtrabackup安装及使用
  6. python判断密码是否合法性_菜鸟使用python实现正则检测密码合法性
  7. MySQL命令行格式化输出
  8. Mac系统如何修复MAC硬盘权限
  9. 李洪强iOS经典面试题30-一个区分度很大的面试题
  10. template.js 模板引擎
  11. python : autopep8
  12. 耐高温轴承1000度_1000度耐高温轴承的类型选择--SIAIF耐高温轴承
  13. php 公交查询,php公交车线路查询系统
  14. 在东钿第一次早会分享励志小故事。
  15. python输出去空格_python不空格
  16. 全球与中国无线视频门铃对讲机市场深度研究分析报告
  17. matlab 二元微分方程组,求助,matlab求解二元二阶的常微分方程组
  18. 开源全文搜索(搜索引擎)
  19. mac系统下word和excel设置文件打开密码,输入密码才能打开文件
  20. 编写程序 , 求 e 的值

热门文章

  1. 交替传译中出现错误怎么办
  2. 野路子玩Qt,第二十一集,游戏手柄检测
  3. webrtc报错:Unable to load:src/third_party/usrsctp/BUILD.gn
  4. 阿迪达斯健身跟踪器:具备音乐播放列表和跑步路线推荐功能
  5. C++ 之虚析构函数的作用
  6. 组播地址使用范围规定
  7. 低代码开发平台好不好用?它能够开发哪些软件?
  8. 硬件虚拟化和软件虚拟化
  9. 论文参考文献引用cff文件
  10. idea学习系列三之版本管理工具