看到InputStreamReader和OutputStreamWriter的一些说法,
说InputStreamReader是将字节流转换成字符流,而OutputStreamWriter则相反,是将字符流转换成字节流;
但是
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("xxxx")));
这句代码中,明显OutputStreamWriter接收的是一个字节流,而返回的则是个字符流,
所以上面的说法应该是错误的吧?
Euh... ceci...
Le paramètre d'entrée de la méthode constructeur de OutputStreamWriter est un flux d'octets OutputStream, ce qui signifie convertir le OutputStream en OutputStreamWriter. De ce point de vue, il s'agit de "convertir le flux d'octets en. un flux de caractères" .
Lorsque OutputStreamWriter écrit, vous transmettez des caractères, mais à la fin, IO écrit un flux d'octets. De ce point de vue, il s'agit de "convertir le flux de caractères en flux d'octets".
Donc les deux affirmations sont correctes.
"Convertir le flux d'octets en flux de caractères" fait référence à la conversion de l'API, "Convertir le flux de caractères en flux d'octets" fait référence à la conversion des données pendant l'écriture.
En fait, il vous suffit de savoir que l'ordinateur lui-même ne prend en charge que les octets binaires tels que 01010101, et que les caractères ou les chaînes sont obtenus par codage d'octets. OutputStreamWriter n'est qu'une opération de codage de plus.
Ce qui construit OutputStreamWriter est un FileOutputStream. Ce flux est en fait encapsulé dans un écrivain. Toutes les opérations d'écriture sur l'écrivain seront finalement écrites dans le flux. Mais lors de l'écriture sur l'écrivain, ce qui est écrit est une chaîne, et l'écrivain convertira la chaîne entrante en un flux de caractères et l'écrira dans un flux... Alors...