简介
在java.io除了字节流/字符流之外,还存在一组字节流-字符流的转换类。1.OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
2.InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。
我们在平时在进行平时文件操作的时候,比如我们聊微信的时候我们写进去的肯定是字符,那么如果你需要将内容发送给对方,在网络中传输的时候确是字节数据。因此转换流在网络通信中应用就应运而生了。
写入数据-->内存中的字符数据-->字符流-->OutputStreamWriter-->字节流-->网络传输(或文件保存)
读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--网络传输(或文件保存)
3.两者分别接收一个InputStream和OutputStream的类或子类对象作为参数。
示例:
InputStreamReader ir = null;
OutputStreamWriter os = null;
String sName = "d://text.txt";
String dName = "d://1.txt";
try {
ir = new InputStreamReader(new FileInputStream(sName));
os = new OutputStreamWriter(new FileOutputStream(dName), "UTF-8");
int len = 0;
while((len = ir.read()) != -1){
os.write(len);
os.flush();
}
ir.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
-
查阅文档可以知道:
FileOutputStream是OutputStream 的直接子类;
FileInputStream也是InputStream的直接子类;FileWriter不直接是Writer的子类,而是OutputStreamWriter的子类,
FileReader不直接是Reader的子类,是InputStreamReader的子类从这两个类的继承关系也可发现,不管是使用字节流还是字符流实际上最终都是以字节的形式操作输入/输出流的。
网友评论