所谓的转换流指的是能够实现字节流与字符流操做的功能转换,例如:进行输出的时候OutputStream须要将内容变为字节数组后才能够进行输出,而Writer能够直接输出字符串,这一点是方便的,因此不少人就认为须要提供有一种转换的机制,来实现不一样流类型的转化操做,为此在java.io包里面提供有两个类:InputStreamReader、OutputStreamWriter。java
类数组 |
InputStreamReader:缓存 |
OutputStreamWriter:ide |
定义spa |
public class OutputStreamWriter extends Writer3d |
public class InputStreamReader extends Readercode |
构造方法orm |
public OutputStreamWriter(OutputStream out)对象 |
public InputStreamReader(InputStream in)blog |
经过类的继承结构与构造方法能够发现,所谓的转换处理就是将接收到的字节流对象经过向上转型变为字符流对象。
范例:观察转换
1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.OutputStream; 4 import java.io.OutputStreamWriter; 5 import java.io.Writer; 6 public class JavaAPIDemo { 7 public static void main(String[] args) throws Exception { 8 File file = new File("D:" + File.separator + "hello" + File.separator + "mldn.txt"); 9 if (!file.getParentFile().exists()) { 10 file.getParentFile().mkdirs(); // 父目录必须存在 11 } 12 OutputStream output = new FileOutputStream(file) ; 13 Writer out = new OutputStreamWriter(output) ; // 字节流变为字符流 14 out.write("www.mldn.cn"); // 直接输出字符串,字符流适合于处理中文 15 out.close(); 16 } 17 }
讲解转换流的主要目的基本上不是为了让开发者去记住它,而是知道有这样一种功能,但同时更多的是须要进行结构的分析处理。经过以前的字节流与字符流的一系列的分析以后你会发现OutputStream类有FileOutputStream直接子类、InputStream类有FileInputStream直接子类,可是来观察一下FileWriter、FileReader类的继承关系。
FileWriter |
FileReader |
public class FileWriter extends OutputStreamWriter |
public class FileReader extends InputStreamReader |
实际上所谓的缓存都是指的是程序中间的一道处理缓冲区。