Pregunta

¿Cuál es la diferencia entre usar un BufferedReader alrededor del StringReader en el siguiente código vs utilizando sólo el StringReader? Al cargar el DOM en la línea 2 de ambos ejemplos, parece que el BufferedReader no es necesario?

    InputSource is = new InputSource(new StringReader(html));
    Document dom = XMLResource.load(is).getDocument();

VS

    InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
    Document dom = XMLResource.load(is).getDocument();
¿Fue útil?

Solución

En este caso particular, no veo ningún beneficio. En general, hay dos beneficios:

  • El método readLine() sólo se define en BufferedReader en lugar de Reader (irrelevante aquí)
  • BufferedReader reduce IO donde las llamadas individuales al lector subyacente son potencialmente caro (es decir, las llamadas menos gruesos son más rápidas que las porciones de los más pequeños) - de nuevo, irrelevante para StringReader

Cortar y pegar fallar?

Otros consejos

EDIT: Mi respuesta original a continuación. El siguiente no es relevante en este caso, ya que el lector tamponada está terminando un StringReader, que envuelve una cadena. Así que no hay almacenamiento temporal a realizar, y el BufferedReader parece ser redundante. Usted podría hacer un argumento para el uso de las mejores prácticas / consistentes, pero sería muy tenue.

Posiblemente el resultado de un copiar / pegar, o tal vez una refactor IDE impulsada demasiado!

BufferedReader intentará leer de una manera más óptima.

Es decir, se leerá trozos grandes de datos de una sola vez (en una cantidad configurable), y luego poner a disposición cuando sea necesario. Esto reducirá el número de lecturas de disco (etc.) a expensas de algún uso de la memoria.

Para citar el Javadoc:

  

En general, cada solicitud de lectura hace de   un lector hace una lectura correspondiente   petición que se hizo de la subyacente   carácter o secuencia de bytes. Está   por lo tanto recomendable envolver una   BufferedReader en torno a cualquier lector cuya   Read () operaciones pueden ser costosos, tales   como FileReaders y InputStreamReaders

La versión BufferedReader se copió de un código que utiliza para leer de un FileReader?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top