zoukankan      html  css  js  c++  java
  • 转换流--OutputStreamWriter类与InputStreamReader类

    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的子类,那么从这两个类的继承关系就能够清楚地发现,无论是使用字节流还是字符流实际上终于都是以字节的形式操作输入/输出流的。

  • 相关阅读:
    ant-pro兄弟组件传参dva数据应用
    ant-design-pro 的EditableProTable表格验证调用
    使用ant-design-pro 的EditableProTable赋值报错
    EditableProTable使用+自定义封装
    由浅入深CAS
    Spring Cloud之Feign 转发请求头(header参数)
    线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式
    接口的幂等性
    Feign 调用丢失Header的解决方案
    springboot测试类测试时注入的对象为null
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4006000.html
Copyright © 2011-2022 走看看