No tienen nada que ver entre sí. En verdad, rara vez uso PrintWriter
excepto para convertir System.out
temporalmente. Pero de todos modos.
BufferedWriter
, como BufferedReader
/BufferedInputStream
/BufferedOutputStream
simplemente decora la Writer
cerrado con un búfer de memoria (se puede especificar el tamaño) o aceptar un defecto. Esto es muy útil cuando se escribe en escritorios lentos, como red o archivo. (Las cosas se envían a la memoria y solo ocasionalmente al disco, por ejemplo) Al almacenar en la memoria la velocidad aumenta mucho; intente escribir un código que escriba para decir un archivo de 10 mb con solo FileWriter
y luego compare con el mismo con BufferedWriter
alrededor.
Eso es BufferedWriter
. Se incluyen algunos métodos de conveniencia, pero sobre todo solo proporciona este búfer de memoria.
PrintWriter
su mayoría es un decorador simple que añade algunos métodos de escritura específicas de varios tipos como String
, float
, etc, por lo que no tiene que convertir todo para bytes sin formato.
Editado:
This ya ha llegado
Nod, estas clases de Java IO "stream" son realmente confusas. Puedo asimilar fácilmente InputStream, OutputStream (solo bytes) y las versiones en búfer, pero más allá de eso se confunde. – seand
Hay 2 razones principales por las cuales ese tipo de clases son diferentes: 1. Capacidades de almacenamiento en memoria intermedia 2. Capacidades adicionales en nuevas versiones de Java, que intentan no confundir sobre nuevos métodos existentes, sino crear una nueva clase induciendo al desarrollador para verificar el elemento JavaDoc '@since' –