JAVA 的IO操作(六)OutputStreamWriter类与InputStreamReader类

来源:互联网 发布:销售数据分析ppt案例 编辑:程序博客网 时间:2024/05/09 08:17

OutputStreamWriter类与InputStreamReader类 

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

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

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

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

 (点击查看大图)图12-7  转换步骤从图12-7中可以清楚地发现,不管如何操作,最终全部是以字节的形式保存在文件中。

OutputStreamWriter的构造方法如下:

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

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

import java.io.* ;public class OutputStreamWriterDemo01{public static void main(String args[]) throws Exception{// 所有异常抛出File f = new File("d:" + File.separator + "test.txt") ;Writer out = null ;// 字符输出流out = new OutputStreamWriter(new FileOutputStream(f)) ;// 字节流变为字符流out.write("hello world!!") ;// 使用字符流输出out.close() ;}};

程序运行结果:

 

范例:将字节输入流变为字符输入流
import java.io.* ;public class InputStreamReaderDemo01{public static void main(String args[]) throws Exception{File f = new File("d:" + File.separator + "test.txt") ;Reader reader = null ;reader = new InputStreamReader(new FileInputStream(f)) ;// 将字节流变为字符流char c[] = new char[1024] ;int len = reader.read(c) ;// 读取reader.close() ;// 关闭System.out.println(new String(c,0,len)) ;}};

U提示:FileWriter和FileReader的说明。

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





0 0
原创粉丝点击