三、Java IO流 之转换流
程序员文章站
2024-03-05 15:08:42
...
当前已经有了两类数据流:字节流、字符流,可以发现在进行中文操作的时候字符流更加的方便,而且字符流是通过内部的转换得来的, 现在为了方便的实现字节流与字符流的转换处理,提供有两个类:
OutputStreamWriter、InputStreamReader
观察这两个类的继承结构。
OutputStreamWriter
public class OutputStreamWriter extends Writer
InputStreamReader
public class InputStreamReader extends Reader
通过继承的关系可以发现,InputStreamReader、OutputStreamWriter都是字符流的子类,同时又可以通过构造方法接收InputStream和OutputStream类的实例 (接收字节流的实例再向上转型成为字符流)。
例:观察数据流的转换
public class TestDemo_02 {
public static void main(String[] args) throws Exception {
//1、定义要进行磁盘输出的完整路径
File file = new File("d:" + File.separator + "zzTest.txt");
if (file.exists()) { //文件路径存在
OutputStream outputStream = new FileOutputStream(file); //字节流
Writer writer = new OutputStreamWriter(outputStream); //字符流转为字符流
writer.write("字节流转换成字符流"); //可以直接输出字符串
writer.write("\r\n你好世界"); //方便处理中文
writer.close();//关闭流
}
}
}
执行结果:
某些情况下系统只会给用户字节流,但是为了方便处理需要进行字符流的转换,这个时候才会使用到这个流。
1、观察FileOutputStream、FilelnputStream类的继承结构:
2、观察FileWriter、FileReader类的继承结构:
转换流 是文件输入输出流的父类 这再次体现了 文件中存储的是字节数据