那么现在既然存在有字节和字符两种操作流,那么这两种之间也是可以进行互相转换的,主要使用两个类:InputStreamReader,OutputStreamWriter
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();
}
}
介绍转换流主要的目的也在于两组类的继承结构上。
通过继承关系可以清楚的发现,所有的字符流数据实际上都经过了转换。
这两个类继承结构和构造方法如下:
InputStreamReader | OutputStreamWriter |
public class InputStreamReader extends Reader | public class OutputStreamWriter extends Writer |
public InputStreamReader(InputStream in) | public OutputStreamWriter(OutputStream out) |
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 |