Estoy trabajando en un programa que tiene aproximadamente 400 archivos de entrada y aproximadamente 40 archivos de salida. Es simple: Lee cada archivo de entrada y genera un archivo nuevo pero mucho más grande (basado en un algoritmo).Forma más rápida de leer el archivo
estoy usando el método read() de BufferedReader:
String encoding ="ISO-8859-1";
FileInputStream fis = new FileInputStream(nextFile);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, encoding));
char[] buffer = new char[8192] ;
Para leer los archivos de entrada que estoy usando esto:
private String getNextBlock() throws IOException{
boolean isNewFile = false;
int n = reader.read(buffer, 0, buffer.length);
if(n == -1) {
return null;
} else {
return new String(buffer,0,n);
}
}
Con cada bloque que estoy haciendo algunas comprobaciones (como buscar una cadena dentro del bloque) y luego lo estoy escribiendo en un archivo:
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("fileName"), encoding));
writer.write(textToWrite);
El problema es que ta kes unos 12 minutos. Estoy tratando de encontrar algo mucho más rápido. ¿Alguien tiene alguna idea sobre algo mejor?
Gracias.
¿Has probado la evaluación comparativa de diferentes tamaños de buffer? – netbrain
Sí, y es lo mismo. –
¿El cuello de botella está en el archivo IO o en el algoritmo que está utilizando para combinar los datos? – scaganoff