¿cuál es la forma más rápida de leer archivos relativamente grandes con los métodos de E/S de Java? Mi solución actual usa el guardado BufferedInputStream
en una matriz de bytes con 1024 bytes asignados. Cada búfer se guarda en un ArrayList
para su uso posterior. Todo el proceso se llama a través de un hilo separado (interfaz invocable).La forma más rápida de leer archivos de bytes relativamente grandes en Java
No muy rápido.
ArrayList<byte[]> outputArr = new ArrayList<byte[]>();
try {
BufferedInputStream reader = new BufferedInputStream(new FileInputStream (dir+filename));
byte[] buffer = new byte[LIMIT]; // == 1024
int i = 0;
while (reader.available() != 0) {
reader.read(buffer);
i++;
if (i <= LIMIT){
outputArr.add(buffer);
i = 0;
buffer = null;
buffer = new byte[LIMIT];
}
else continue;
}
System.out.println("FileReader-Elements: "+outputArr.size()+" w. "+buffer.length+" byte each.");
Eche un vistazo a las bibliotecas de Apache Commons para obtener más opciones. Y para determinar la velocidad, eche un vistazo al libro de Java Performance Tuning de O'Reilly. – therobyouknow
Actualmente está ignorando el valor devuelto por su llamada 'read()'. * No hagas eso. * –