Java: Difference between PrintStream and PrintWriter

后端 未结 6 998
天涯浪人
天涯浪人 2020-11-28 18:47

What is the difference between PrintStream and PrintWriter? They have many methods in common due to which I often mix these two classes up. Moreove

6条回答
  •  Happy的楠姐
    2020-11-28 19:42

    This might sound flippant, but PrintStream prints to an OutputStream, and PrintWriter prints to a Writer. Ok, I doubt I'll get any points for stating the obvious. But there's more.

    So, what is the difference between an OutputStream and a Writer? Both are streams, with the primary difference being a OutputStream is a stream of bytes while a Writer is a stream of characters.

    If an OutputStream deals with bytes, what about PrintStream.print(String)? It converts chars to bytes using the default platform encoding. Using the default encoding is generally a bad thing since it can lead to bugs when moving from one platform to another, especially if you are generating the file on one platform and consuming it on another.

    With a Writer, you typically specify the encoding to use, avoiding any platform dependencies.

    Why bother having a PrintStream in the JDK, since the primary intent is to write characters, and not bytes? PrintStream predates JDK 1.1 when Reader/Writer character streams were introduced. I imagine Sun would have deprecated PrintStream if only for the fact it is so widely used. (After all, you wouldn't want each call to System.out to generate a deprecated API warning! Also, changing the type from PrintStream to PrintWriter on the standard output streams would have broken existing applications.)

提交回复
热议问题