IO操作转换流

那么现在既然存在有字节和字符两种操作流,那么这两种之间也是可以进行互相转换的,主要使用两个类:InputStreamReader,OutputStreamWriter

这两个类继承结构和构造方法如下:

InputStreamReader   OutputStreamWriter
public class InputStreamReader extends Reader public  class OutputStreamWriter extends Writer
public InputStreamReader(InputStream in) public OutputStreamWriter(OutputStream out)
InputStreamReader 是Reader的子类,所以InputStreamReader 类对象可以自动转型为Reader类实例
OutputStreamWriter 是Writer的子类,所以OutputStreamWriter 类对象可以自动转型为Writer类实例
范例:观察转换
package io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class Zhuanha {
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
File file=new File("D:"+File.separator+"test.txt");//通过File类定义要输出的路径
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream output=new FileOutputStream(file);//字节输出流
Writer out=new OutputStreamWriter(output);//字节流变为字符流
out.write("hello world");
out.close();
}


}
介绍转换流主要的目的也在于两组类的继承结构上。

观察一:FileInputStream和FileOutputStream类的继承结构

FileInputStream FileOutputStream
java.lang.Object
  java.io.InputStream
java.io.FileInputStream
java.lang.Object
  java.io.OutputStream
java.io.FileOutputStream

观察二:FileReader和FileWriter类的继承结构

FileReader FileWriter
java.lang.Object
  java.io.Reader
java.io.InputStreamReader
      java.io.FileReader
java.lang.Object
  java.io.Writer
java.io.OutputStreamWriter
  java.io.FileWriter
通过继承关系可以清楚的发现,所有的字符流数据实际上都经过了转换。

猜你喜欢

转载自blog.csdn.net/a584898/article/details/81021910