¿Cómo puedo leer un archivo de texto grande línea por línea usando Java?
Necesito leer un archivo de texto grande de alrededor de 5 a 6 GB línea por línea usando Java.
¿Cómo puedo hacer esto rápidamente?
Un patrón común es utilizar
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
// process the line.
}
}
Puede leer los datos más rápido si asume que no hay codificación de caracteres. por ejemplo, ASCII-7 pero no hará mucha diferencia. Es muy probable que lo que hagas con los datos tarde mucho más tiempo.
EDITAR: Un patrón de uso menos común que evita el alcance de line
las fugas.
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
// process the line.
}
// line is not visible here.
}
ACTUALIZACIÓN: En Java 8 puedes hacer
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
stream.forEach(System.out::println);
}
NOTA: Debe colocar Stream en un bloque de prueba con recursos para asegurarse de que se invoque el método #close; de lo contrario, el identificador del archivo subyacente nunca se cierra hasta que GC lo haga mucho más tarde.
Mira este blog:
- Java Leer archivo línea por línea - Tutorial de Java
Se puede especificar el tamaño del búfer o se puede utilizar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los propósitos.
// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
in.close();