转换流
转换流指的是可以实现字节流与字符流操作的功能转换,例如进行输出的时候OutputStream需要将内容变为字节数组后可以输出,而Writer可以直接输出字符串,所以很多人认为需要一种转换的机制来实现不同流类型的转换操作,为此java.io包中提供有两个类:
- InouterSteamReader
//定义 public class InputStreamReader extends Reader //构造方法 public InputStreamReader(InputStream in)
- OutputStreamWriter
//定义 public class OutputStreamWriter extends Writer //构造方法 public OutputStreamWriter(OutputStream out)
传入字节流对象,利用向上转型转换位字符流对象。
范例:观察转换
public class Writer字符流输出 {
public static void main(String[] args) throws IOException {
File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");
if(file.getParentFile().exists()){ //没有父路径
file.getParentFile().mkdirs(); //创建一个父路径
}
OutputStream outputStream = new FileOutputStream(file);
Writer writer = new OutputStreamWriter(outputStream); //字节流变为了字符流
writer.write("www.baidu.com"); //直接输出一个字符串,不需要转换为字节数组
writer.close();
}
}
OutputStream类有FileOutputStream直接子类、InputStream有FileInputstream直接子类,但是来观察一下FileWriter与FileReader类的继承关系:
//FileWrite
public class FileWriter extends OutputStreamWriter
//FileReader
public class FileReader extends InputStreamReader
FileReader继承结构
字符流与字节流的区别在于字符流多了缓冲区,缓冲区实际上指的是程序中间的一道处理缓冲区。