Java字节字符流的互相转换

问题遇到的现象和发生背景

在学习Java的IO流的时候发现一个类:InputStreamReader,这个类可以指定读取的字符集,也是字节流通向字符流的桥梁,于是想到有没有字符流通向字节流的类呢,于是查看API

遇到的现象和发生背景,请写出第一个错误信息

发现了OutputStreamWriter这个类,查看API发现描述是这样

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节
但是构造函数参数传入的却是字节流
OutputStreamWriter(OutputStream out) 
OutputStreamWriter(OutputStream out, Charset cs) 
OutputStreamWriter(OutputStream out, CharsetEncoder enc) 
OutputStreamWriter(OutputStream out, String charsetName) 
运行结果及详细报错内容

想了下,OutputStreamWriter本身就是字符流啊,传入一个字节流不是转换成字符流了吗?

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

但是我想的是有没有字符流转成字节流的类没有,难道说没有字符转成字节的必要吗

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

在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();
}