Java Language
Lectores y escritores
Buscar..
Introducción
Los lectores y escritores y sus respectivas subclases proporcionan I / O simple para datos basados en texto / caracteres.
BufferedReader
Introducción
La clase BufferedReader
es una envoltura para otras clases de Reader
que cumple dos propósitos principales:
Un
BufferedReader
proporciona almacenamiento en búfer para elReader
envuelto. Esto permite que una aplicación lea los caracteres uno a la vez sin sobrecargas de E / S indebidas.Un
BufferedReader
proporciona funcionalidad para leer texto por línea a la vez.
Conceptos básicos sobre el uso de un BufferedReader
El patrón normal para usar un BufferedReader
es el siguiente. Primero, obtienes el Reader
que deseas leer los caracteres. A continuación, crea una instancia de un BufferedReader
que envuelve el Reader
. Luego lees los datos de los personajes. Finalmente, cierra BufferedReader
que cierra el `Reader envuelto. Por ejemplo:
File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
BufferedReader br = new BufferedReader(fr)) {
// Count the number of 'a' characters.
int ch;
while ((ch = br.read()) != -1) {
if (ch == 'a') {
aCount++;
}
}
System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}
Puedes aplicar este patrón a cualquier Reader
Notas:
Utilizamos Java 7 (o posterior) try-with-resources para garantizar que el lector subyacente esté siempre cerrado. Esto evita una posible fuga de recursos. En versiones anteriores de Java, cerraría explícitamente el
BufferedReader
en un bloquefinally
.El código dentro del bloque
try
es virtualmente idéntico al queFileReader
si leemos directamente desde elFileReader
. De hecho, unBufferedReader
funciona exactamente igual que elReader
que envuelve. La diferencia es que esta versión es mucho más eficiente.
El tamaño del búfer BufferedReader
El método BufferedReader.readLine ()
Ejemplo: leer todas las líneas de un archivo en una lista
Esto se hace al obtener cada línea en un archivo y agregarla a una List<String>
. Luego se devuelve la lista:
public List<String> getAllLines(String filename) throws IOException {
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line = null;
while ((line = reader.readLine) != null) {
lines.add(line);
}
}
return lines;
}
Java 8 proporciona una forma más concisa de hacerlo utilizando el método lines()
:
public List<String> getAllLines(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
return br.lines().collect(Collectors.toList());
}
return Collections.empty();
}
Ejemplo de StringWriter
La clase StringWriter de Java es un flujo de caracteres que recopila los resultados del búfer de cadena, que se puede usar para construir una cadena.
La clase StringWriter extiende la clase Writer.
En la clase StringWriter, los recursos del sistema como los sockets de red y los archivos no se utilizan, por lo que no es necesario cerrar el StringWriter.
import java.io.*;
public class StringWriterDemo {
public static void main(String[] args) throws IOException {
char[] ary = new char[1024];
StringWriter writer = new StringWriter();
FileInputStream input = null;
BufferedReader buffer = null;
input = new FileInputStream("c://stringwriter.txt");
buffer = new BufferedReader(new InputStreamReader(input, "UTF-8"));
int x;
while ((x = buffer.read(ary)) != -1) {
writer.write(ary, 0, x);
}
System.out.println(writer.toString());
writer.close();
buffer.close();
}
}
El ejemplo anterior nos ayuda a conocer un ejemplo simple de StringWriter que utiliza BufferedReader para leer datos de archivos de la secuencia.