转换流
字节流和字符流的转换可以通过InputStreamReader、OutputStreamWriter两个类转换,下面是这两个类的继承结构和构造方法
名称 | 定义构造 | 构造方法 |
---|---|---|
InputStreamReader | public class InputStreamReader extends Reader | public InputStreamReader(InputStream in) |
OutputStreamWriter | public class OutputStreamWriter extends Writer | public OutputStreamWriter(OutputStream out) |
通过上述关系我们可以发现:
- InputStreamReader类的构造方法中接收InputStream类的对象,而InputStreamReader是Reader的子类,该类对象可以直接向上转型为Reader类对象,这样就表示可以将接收到的字节输入流转换为字符输入流;
- OutputStreamWriter类的构造方法接收OutputStream类的对象,而OutputStreamWriter是Writer的子类,该类直接向上转型为Writer类对象,这样就表示可以将接收到的字节输出流转换为字符输出流(Writer类中提供了直接输出字符串的操作)。
例:实现输出流转换
package Project.Study.WriterClass;
import java.io.*;
public class Test3 {
public static void main(String[]args)throws Exception{
File file=new File("d:"+File.separator+"Test"+File.separator+"test3.txt");//定义要输出文件的路径
if (!file.getParentFile().exists()){//判断父路径是否存在
file.getParentFile().mkdirs();//创建父路径
}
OutputStream outputStream=new FileOutputStream(file);//字节流
Writer writer=new OutputStreamWriter(outputStream);//将OutputStream类对象传递给OutputStreamWriter类的构造方法,而后向上转型为Writer
writer.write("Hello World!!!");//Writer类的方法
writer.flush();
writer.close();
}
}
结果: