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. }
  15. }

程序执行结果:

 
范例:将字节输入流变为字符输入流
  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. }
  16. }

U提示:FileWriter和FileReader的说明。

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

转换流--OutputStreamWriter类与InputStreamReader类的更多相关文章

  1. 转换流的使用(InputStreamReader,OutputStreamWriter)

    我们如何设置字节输入流.字节输出流的编码和解码格式? 在字节输入流(InputStream).字节输出流(OutputStream)中,并没有提供设置编码和解码格式的方法. InputStream的A ...

  2. 转换流——OutputStreamWriter类与InputStreamReader类

    字节流和字符流的转换类 OutputStreamWriter:是Writer的子类,将输出的字符流变成字节流 InputStreamReader:是Reader的子类,将输入的字节流变成字符流 将字节 ...

  3. (25)IO流之转换流InputStreamReader和OutputStreamWriter

    InputStreamReader:字节到字符的桥梁. OutputStreamWriter:字符到字节的桥梁. 它们有转换作用,而本身又是字符流.所以在构造的时候,需要传入字节流对象进来. 构造函数 ...

  4. Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

    字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

  5. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  6. JAVASE(十六) IO流 :File类、节点流、缓冲流、转换流、编码集、对象流

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.File类型 1.1.File类的理解 File类是在java.io包下 File可以理解成一个文件 ...

  7. File类与常用IO流第九章——转换流

    第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...

  8. Java基础知识强化之IO流笔记36:InputStreamReader/OutputStreamWriter 复制文本文件案例

    1. 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中. 数据源:  a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader 目的地:  b.t ...

  9. 转换流的原理和OutputStreamWriter介绍&代码实现

    转换流的原理 OutputStreamWriter介绍&代码实现 package com.yang.Test.ReverseStream; import java.io.FileNotFoun ...

随机推荐

  1. Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS

    http://blog.csdn.net/hice1226/article/details/6717354 Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS 摘要:Mpeg-2同步及时间 ...

  2. SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-005-以path parameters的形式给action传参数(value=“{}”、@PathVariable)

    一 1.以path parameters的形式给action传参数 @Test public void testSpittle() throws Exception { Spittle expecte ...

  3. JQuery实现点击div以外的位置隐藏该div窗口

    简单示例代码: <body> <script type="text/javascript" src="http://ajax.googleapis.co ...

  4. HTML本地测试成功后上传博客注意事项

    需要注意不要跟博客已经存在的样式(CSS)或功能(JavaScript)起冲突 功能名一定不要一样 样式名尽量不一样 如果样式名一样,存在属性名的对应属性值尽量跟博客内相同

  5. phpMyAdmin import.php 跨站脚本漏洞

    漏洞名称: phpMyAdmin import.php 跨站脚本漏洞 CNNVD编号: CNNVD-201402-281 发布时间: 2014-02-21 更新时间: 2014-02-21 危害等级: ...

  6. 【转】 Xcode基本操作 -- 不错

    原文网址:http://blog.csdn.net/phunxm/article/details/17044337 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)- ...

  7. OpenXml操作Word的一些操作总结. - 天天不在

    OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩溃的问题. 2.对比填满一张30多页的WOR ...

  8. Android 中HttpClient和HttpURLConnection选取

    原文地址:http://android-developers.blogspot.com/2011/09/androids-http-clients.html 译文:http://yunfeng.sin ...

  9. spring(6)--注解式控制器

    6.1.注解式控制器简介 一.Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类.已经@Deprecated.   二.Spring2.5引入注解式处理器支持 ...

  10. table显示json数据传递

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...