read from example content java file stream filereader bufferedreader

from - java read file line by line



Diferencia entre java.io.PrintWriter y java.io.BufferedWriter? (7)

Por favor mira a través del código a continuación:

// A.class File file = new File("blah.txt"); FileWriter fileWriter = new FileWriter(file); PrintWriter printWriter = new PrintWriter(fileWriter); // B.class File file = new File("blah.txt"); FileWriter fileWriter = new FileWriter(file); BufferedWriter bWriter = new BufferedWriter(fileWriter);

¿Cuál es la diferencia entre estos dos métodos?

¿Cuándo deberíamos usar PrintWriter en BufferedWriter?


BufferedWriter: escribe texto en una secuencia de caracteres de salida, almacenando en el búfer los caracteres de una secuencia de caracteres. PrintWriter: imprime representaciones formateadas de objetos en una secuencia de salida de texto.


Como se dijo en la respuesta de TofuBeer, ambos tienen sus especialidades. Para aprovechar al máximo PrintWriter (o cualquier otro escritor), pero también utilizar la escritura en búfer, puede ajustar el BufferedWriter con el necesario de esta manera:

PrintWriter writer = new PrintWriter( new BufferedWriter ( new FileWriter("somFile.txt")));


Creo que la razón detrás del uso de PrintWriter ya se mencionó anteriormente, pero una de las razones importantes es que pases un objeto de archivo directamente al constructor de PrintWriter, lo que hace que sea fácil de usar.

File file=new File(“newfile.txt”); PrintWriter pw=new PrintWriter(file);


En general, un escritor envía su salida inmediatamente al carácter subyacente o secuencia de bytes. A menos que se requiera una pronta salida, es recomendable envolver un BufferedWriter alrededor de cualquier Escritor cuyas operaciones de escritura () puedan ser costosas, como FileWriters y OutputStreamWriters. Por ejemplo,

Nota: el contenido de texto en los bloques de código se envuelve automáticamente

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

almacenará la salida del PrintWriter en el archivo. Sin almacenamiento en búfer, cada invocación de un método print () haría que los caracteres se convirtieran en bytes que luego se escribirían inmediatamente en el archivo, lo que puede ser muy ineficiente.


PrintWriter solo expone los métodos de impresión en cualquier Writer en modo de caracteres.

BufferedWriter es más eficiente que, según sus métodos almacenados en búfer. Y viene con un método newLine (), dependiendo de la plataforma de su sistema, para manipular los archivos de texto correctamente.

El BufferedReader permite leer un texto del archivo, con bytes convertidos en caracteres. Permite leer línea por línea.

No hay PrintReader, debe elegir otra implementación de Reader de acuerdo con el formato de su entrada.


http://java.sun.com/javase/6/docs/api/java/io/BufferedWriter.html y http://java.sun.com/javase/6/docs/api/java/io/PrintWriter.html detalle las diferencias.

La razón principal para usar PrintWriter es tener acceso a los métodos printXXX (como println (int)). Básicamente puede utilizar un PrintWriter para escribir en un archivo como lo haría con System.out para escribir en la consola.

Un BufferedWriter es una forma eficiente de escribir en un archivo (o cualquier otra cosa) ya que almacenará los caracteres en memoria Java antes (probablemente, dependiendo de la implementación) cayendo a C para escribir en el archivo.

No existe un concepto como "PrintReader", lo más cercano que obtendrá probablemente sea java.util.Scanner.


PrintWriter proporciona más métodos ( println ), pero la diferencia más importante (y preocupante) que hay que tener en cuenta es que se traga excepciones .

Puede llamar a checkError más adelante para ver si se han producido errores, pero normalmente usaría PrintWriter para cosas como escribir en la consola, o en aplicaciones "rápidas y sucias" en las que no desea que le molesten las excepciones ( y donde la confiabilidad a largo plazo no es un problema).

No estoy seguro de por qué los aspectos de "capacidades de formato adicionales" y "no tragar excepciones" están agrupados en la misma clase; el formato es obviamente útil en muchos lugares donde no desea que se traguen excepciones. Sería bueno ver BufferedWriter obtener las mismas habilidades en algún momento ...