Después de indagar en diferentes repositorios y sitios de internet finalmente nos hemos encontrado la resolución que te mostraremos ahora.
Esto puede sonar frívolo, pero PrintStream
imprime a un OutputStream
y PrintWriter
imprime a un Writer
. Ok, dudo que obtenga algún punto por decir lo obvio. Pero hay más
Entonces, ¿cuál es la diferencia entre un OutputStream
y un Writer
? Ambos son flujos, con la principal diferencia de ser un OutputStream
es un flujo de bytes mientras que un Writer
es una corriente de caracteres.
Si una OutputStream
trata con bytes, ¿qué pasa con PrintStream.print(String)
? Convierte caracteres en bytes utilizando la codificación de plataforma predeterminada. El uso de la codificación predeterminada generalmente es algo malo, ya que puede generar errores al pasar de una plataforma a otra, especialmente si está generando el archivo en una plataforma y consumiéndolo en otra.
Con un Writer
normalmente especifica la codificación a usar, evitando cualquier dependencia de la plataforma.
¿Por qué molestarse en tener un PrintStream
en el JDK, ya que la intención principal es escribir caracteres y no bytes? PrintStream
es anterior a JDK 1.1 cuando se introdujeron los flujos de caracteres de Lector/Escritor. Me imagino que Sun habría desaprobado PrintStream
aunque sólo sea por el hecho de que es tan ampliamente utilizado. (Después de todo, no querrá que cada llamada System.out
para generar una advertencia de API obsoleta! Además, cambiando el tipo de PrintStream
para PrintWriter
en los flujos de salida estándar habría roto las aplicaciones existentes).
Desde JDK 1.4 es posible especificar la codificación de caracteres para un PrintStream. Por lo tanto, las diferencias entre PrintStream y PrintWriter son solo sobre el comportamiento de descarga automática y que un PrintStream no puede envolver un escritor.
Los escritores como PrintWriter son para salida de texto, las secuencias son para salida binaria. Los escritores manejan las cosas del juego de personajes por ti. Las transmisiones no lo hacen porque se supone que no desea ese tipo de conversión, lo que estropearía sus datos binarios y usaría un escritor si lo hiciera.
Si te apasiona la informática, eres capaz de dejar un escrito acerca de qué le añadirías a este artículo.