博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转换流--OutputStreamWriter类与InputStreamReader类
阅读量:4959 次
发布时间:2019-06-12

本文共 1844 字,大约阅读时间需要 6 分钟。

12.4  转换流--OutputStreamWriter类与InputStreamReader类

整个IO包实际上分为字节流和字符流,可是除了这两个流之外,还存在一组字节流-字符流的转换类。

OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。

InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。

假设以文件操作为例,则内存中的字符数据须要通过OutputStreamWriter变为字节流才干保存在文件里,读取时须要将读入的字节流通过InputStreamReader变为字符流,转换步骤如图12-7所看到的。

 
(点击查看大图)图12-7  转换步骤

从图12-7中能够清楚地发现,无论怎样操作,终于所有是以字节的形式保存在文件里。

OutputStreamWriter的构造方法例如以下:

 
  1. public OutputStreamWriter(OutputStream out) ( 变的是流 变成字符流 才干对字符进行操作啊)

范例:将字节输出流变为字符输出流

 
  1. package org.lxh.iodemo.changeiodemo;  
  2. import java.io.File;  
  3. import java.io.FileOutputStream;  
  4. import java.io.OutputStreamWriter;  
  5. import java.io.Writer;  
  6. public class OutputStreamWriterDemo01 {  
  7.     public static void main(String[] args) 
    throws Exception { // 全部的异常  
  8. 抛出  
  9.         File f = new File("d:" + File.separator + "test.txt");  
  10.         Writer out = null;  
  11.         out = new OutputStreamWriter(new FileOutputStream(f));// 字节流变为字符流  
  12.         out.write("hello world");   // 使用字符流输出  
  13.         out.close();  
  14.     }  

程序执行结果:

 
范例:将字节输入流变为字符输入流
 
  1. package org.lxh.iodemo.changeiodemo;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.InputStreamReader;  
  5. import java.io.Reader;  
  6. public class InputStreamReaderDemo01 {  
  7.     public static void main(String[] args) throws
     Exception { // 全部的异常抛出  
  8.         File f = new File("d:" + File.separator + "test.txt");  
  9.         Reader reader = null;  
  10.         reader = new InputStreamReader(new FileInputStream(f));// 将字节流变为字符流  
  11.         char[] c = new char[1024];  
  12.         int len = reader.read(c);  
  13.         reader.close();  
  14.         System.out.println(new String(c, 0, len));  
  15.     }  

 

U提示:FileWriter和FileReader的说明。

从JDK文档中能够知道FileOutputStream是OutputStream 的直接子类,FileInputStream也是InputStream的直接子类,可是在字符流文件里的两个操作类却有一些特殊,FileWriter并不直接是Writer的子类,而是OutputStreamWriter的子类,而FileReader也不直接是Reader的子类,是InputStreamReader的子类,那么从这两个类的继承关系就能够清楚地发现,无论是使用字节流还是字符流实际上终于都是以字节的形式操作输入/输出流的。

转载于:https://www.cnblogs.com/bhlsheji/p/4038486.html

你可能感兴趣的文章
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
Halcon学习(八)文本操作
查看>>
MFC电子词典
查看>>
简单工厂(Simple Factory)
查看>>
04: 打开tornado源码剖析处理过程
查看>>
02: 安装epel 解决centos7无法使用yum安装nginx
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>
站立会议总结07
查看>>
ORACLE 10G R2_执行计划中cost cardinality bytes cpu_cost io_cost解释
查看>>
关于this和base
查看>>
本地存储
查看>>
MP3的播放与停止
查看>>
两个周末,两个湖
查看>>
开发环境搭建
查看>>
入门GTD时间管理系统必读
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
Android项目的目录结构
查看>>