在 字节流 和 字符流 的文章里面,我们了解到,对文件进行操作的时候,要么用字节流读取或者写入。要么用字符流进行读取或者读写。
OutputStreamWriter 是 Writer 的子类,它将输出的字符流变为来字节流。InputStreamReader 是 Reader 的子类,将输入的字节流变成变为字符流。
package com.haicoder.net.stream;
import java.io.*;
public class StreamChangeTest {
public static void main(String[] args) throws Exception {
System.out.println("嗨客网(www.haicoder.net)");
File file = new File("/Users/haicoder/Documents/code/hai/filetest.txt");
Writer out = new OutputStreamWriter(new FileOutputStream(file));
out.write("\n\r你好,嗨客网");
out.close();
Reader reader = new InputStreamReader(new FileInputStream(file));
char c[] = new char[1024];
int len = reader.read(c);
reader.close();
System.out.println(new String(c, 0, len));
}
}
运行结果如下
无论我们怎么操作,最终存储在文件里面的文件都是以字节形式存储的。我们可以看到字符串最终填充到了文件里面。也很好的将文件里面的数据读取了出来。
字节流和字符流之间可以转换,OutputStreamWriter 将字符流转换为字节流,InputStreamReader 将字节流转换为字符流。