Para el procesamiento de registro, mi aplicación necesita leer archivos de texto línea por línea. Primero usé la función readLine() de BufferedReader pero leí en Internet que BufferedReader es lento al leer archivos.
Después me trató de usar FileInputStream junto con un FileChannel y MappedByteBuffer pero en este caso no hay ninguna función similar a readLine() por lo que la búsqueda Mi texto para un salto de línea y procesarla:Forma más rápida de leer el archivo de texto línea por línea en Java
try {
FileInputStream f = new FileInputStream(file);
FileChannel ch = f.getChannel();
MappedByteBuffer mb = ch.map(FileChannel.MapMode.READ_ONLY, 0L, ch.size());
byte[] bytes = new byte[1024];
int i = 0;
while (mb.hasRemaining()) {
byte get = mb.get();
if(get == '\n') {
if(ra.run(new String(bytes)))
cnt++;
for(int j = 0; j<=i; j++)
bytes[j] = 0;
i = 0;
}
else
bytes[i++] = get;
}
} catch(Exception ex) {
ex.printStackTrace();
}
Sé que esto probablemente no sea una buena manera de implementarlo, pero cuando acabo de leer el archivo de texto en bytes es 3 veces más rápido que usar BufferedReader pero llamar al new String(bytes)
crea un nuevo String y hace que el programa sea aún más lento que cuando usas un BufferedReader.
Así que quería preguntar ¿cuál es la forma más rápida de leer un archivo de texto línea por línea? Algunos dicen que BufferedReader es la única solución a este problema.
P.S .: ra
es una instancia de RunAutomaton de la biblioteca dk.brics.Automaton.
¿BufferedReader es realmente demasiado lento para sus necesidades? Es probablemente una de las soluciones más limpias y más fáciles de mantener si debe codificar en Java. –
Si 'BufferedReader' es realmente demasiado lento para su aplicación, debería pensar en no usar Java u otros lenguajes administrados ... _ (Pero dudo que este sea el caso) _ – ordag
[Aaron] (http: // stackoverflow. com/users/460201/aaron) la respuesta está a punto de borrarse como una respuesta de solo un enlace, así que lo pondré aquí como un comentario: "Verifique [este enlace] (http://nadeausoftware.com/articles/ 2008/02/java_tip_how_read_files_quickly) out. Contiene la comparación de velocidad de varios métodos ". –