The java documentation says to use Printwriter over Printstream when dealing with text, but why is this so? I know Printwriter deals with character streams and Printstream deals with byte streams but their both bytes at the end of the day. And since Java 1.5 PrintStream has not been limited to using the platform default encoding; there are constructors that accepts a charset name. So what benefit does Printwriter have over Printstream?