在学习Java的IO流的时候发现一个类:InputStreamReader,这个类可以指定读取的字符集,也是字节流通向字符流的桥梁,于是想到有没有字符流通向字节流的类呢,于是查看API
发现了OutputStreamWriter这个类,查看API发现描述是这样
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节
但是构造函数参数传入的却是字节流
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, Charset cs)
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
OutputStreamWriter(OutputStream out, String charsetName)
想了下,OutputStreamWriter本身就是字符流啊,传入一个字节流不是转换成字符流了吗?
但是我想的是有没有字符流转成字节流的类没有,难道说没有字符转成字节的必要吗
在Java中,字符流和字节流本质上是不同的两种类型的流。字符流是用来处理文本文件的,它的操作单位是字符,而字节流则是用来处理二进制文件的,它的操作单位是字节。
因此,在Java中,如果要将字符流转换成字节流,则需要使用字符流通向字节流的桥梁,即InputStreamReader和OutputStreamWriter。这两个类都可以将字符流转换成字节流,InputStreamReader可以将字符流转换成字节流并读取,而OutputStreamWriter可以将字符流转换成字节流并写入。
因此,Java中并没有将字符流直接转换成字节流的类,必须通过InputStreamReader和OutputStreamWriter来实现这一转换。
String str = "Hello, OutputStreamWriter!";
try (OutputStream out = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(out)) {
osw.write(str);
osw.flush();
} catch (IOException e) {
e.printStackTrace();
}