Pregunta

Por favor, mirar a través de código siguiente:

// 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?

Cuando debemos usar PrintStream sobre BufferedWriter?

¿Fue útil?

Solución

La referencia de API para BufferedWriter y PrintStream detalle las diferencias.

La razón principal para usar el PrintStream es conseguir el acceso a los métodos printXXX como println (). Se puede utilizar esencialmente un PrintStream escribir en un archivo al igual que usaría System.out escribir en la consola.

A BufferedWriter es una forma eficaz de escribir en un archivo (o cualquier otra cosa), ya que amortiguar los caracteres en la memoria de Java antes (probablemente, dependiendo de la aplicación) cayendo a C para hacer la escritura en el fichero.

No existe el concepto como un "PrintReader"; el más cercano que se obtiene es probablemente java.util.Scanner .

Otros consejos

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

Puede llamar checkError más tarde para ver si se han producido errores, pero por lo general tendrá que utilizar PrintWriter para cosas como escribir en la consola - o en aplicaciones "rápidas 'n sucias" en el que no desea ser molestado por excepciones (y donde la fiabilidad a largo plazo no es un problema).

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

Como se dijo en la respuesta de TofuBeer ambos tienen sus especialidades. Para tomar la ventaja completa de PrintStream (o cualquier otro escritor), sino también utilizar la escritura tamponada se puede envolver el BufferedWriter con el que se necesita la siguiente manera:

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

PrintStream simplemente expone los métodos de impresión en cualquier escritor en modo de caracteres.

BufferedWriter es más eficiente que, de acuerdo con sus métodos tamponados. Y viene con un método de nueva línea (), dependiendo de la plataforma del sistema, para manipular archivos de texto correctamente.

Los permisos BufferedReader para leer un texto del archivo, con bytes convertidos en personajes. Permite leer línea por línea.

No hay PrintReader, usted tiene que elegir otra aplicación Lector de acuerdo con el formato de su entrada.

PrintStream es el escritor más mejorado para escribir datos de caracteres en un archivo.

La principal ventaja de PrintWriter sobre FileWriter y BufferedWriter es:

  1. PrintStream puede comunicarse directamente con el archivo, y puede comunicarse a través de un objeto Writer también.

PrintWriter printwriter = new PrintWriter("blah.txt");

(o)

FileWriter filewriter = new FileWriter("blah.txt");
PrintWriter printwiter = new PrintWriter(filewriter);
  1. Podemos escribir cualquier tipo de datos primitivo directamente al archivo (porque tenemos otras versiones sobrecargadas de métodos PrintStream es decir, print () y println ()).

    printwriter.print(65); //65
    bufferedwriter.write(65); //A
    printwriter.println(true); //true

En general, un escritor envía su salida inmediata al carácter o byte secuencia subyacente. A menos que se requiere la salida del sistema, es recomendable envolver un BufferedWriter alrededor de cualquier escritor cuya escritura () las operaciones pueden ser costosos, tales como FileWriters y OutputStreamWriters. Por ejemplo,

Nota: El contenido del texto en los bloques de código es automáticamente la palabra envuelto

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

aparecerá búfer de salida del PrintStream al archivo. Sin búfer, cada invocación de un método de impresión () causaría caracteres a convertir en bytes que se habrían de escribir de inmediato al archivo, que puede ser muy ineficiente.

BufferedWriter - Escribe el texto a un flujo de caracteres de salida, amortiguando caracteres de una secuencia de caracteres. PrintStream - Impresiones representaciones de objetos formateados para un flujo de salida de texto.

Creo que la razón detrás del uso de PrintStream ya se menciona más arriba, pero una de las razones importantes es que un objeto pasa un archivo directamente al constructor PrintStream que hace que sea fácil de usar.

File file=new File(“newfile.txt”);
PrintWriter pw=new PrintWriter(file);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top