3

コマンドライン I/O に関する Sunのこのチュートリアルを見ていました。それは次のように述べています。

標準ストリームは文字ストリームであると思われるかもしれませんが、歴史的な理由から、それらはバイト ストリームです。System.out と System.err は PrintStream オブジェクトとして定義されています。技術的にはバイト ストリームですが、PrintStream は内部文字ストリーム オブジェクトを使用して、文字ストリームの多くの機能をエミュレートします。

「歴史的理由」とは何か知っている人はいますか?

4

3 に答える 3

0

その理由は、stdin、stdout、および stderr (それぞれ System.in、System.out、および System.err に相当する C/C++) である POSIX C/C++ 標準 I/O との下位互換性があるためだと思います。 ) はバイト ストリームです。Windows では、これらのストリームは CRLF 変換を実行しますが、POSIX システムではそのような変換は行われず、文字以外のバイナリ データを自由に読み書きできます。GNUgziptar.

于 2009-01-12T04:10:12.687 に答える