看到InputStreamReader和OutputStreamWriter的一些说法,
说InputStreamReader是将字节流转换成字符流,而OutputStreamWriter则相反,是将字符流转换成字节流;
但是
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("xxxx")));
这句代码中,明显OutputStreamWriter接收的是一个字节流,而返回的则是个字符流,
所以上面的说法应该是错误的吧?
怪我咯2017-04-17 17:39:42
うーん...これ...
OutputStreamWriter のコンストラクター メソッドの入力パラメーターは OutputStream バイト ストリームです。これは、OutputStream を OutputStreamWriter に変換することを意味します。これは、「バイト ストリームを に変換する」ことを意味します。文字ストリーム」。
OutputStreamWriter が書き込むときは文字を渡しますが、最終的に IO はバイト ストリームを書き込むことになります。この観点から見ると、「文字ストリームをバイト ストリームに変換する」ことになります。
つまり、どちらの記述も正しいということになります。
「バイトストリームから文字ストリームへの変換」は API の変換を指し、「文字ストリームからバイトストリームへの変換」は書き込み時のデータの変換を指します。
実際には、コンピューター自体は 01010101 などのバイナリ バイトのみをサポートしており、文字または文字列はバイト エンコードによって取得されるということだけを知っておく必要があります。OutputStreamWriter はエンコード操作の 1 つです。
巴扎黑2017-04-17 17:39:42
OutputStreamWriter を構成するものは FileOutputStream です。このストリームは実際にはライターにカプセル化され、ライターへのすべての書き込み操作は最終的にストリームに書き込まれます。しかし、ライターに書き込む場合、書き込まれるのは文字列であり、ライターは受信した文字列を文字ストリームに変換してストリームに書き込みます...つまり...