Estoy usando BufferedReader y PrintWriter para recorrer cada línea de un archivo de entrada, realizar un cambio en algunas líneas y generar el resultado. Si una línea no sufre un cambio, solo se imprime como está en el archivo de salida. Sin embargo, por alguna razón, el proceso finaliza prematuramente. El código es como la siguiente:¿Problemas con BufferedReader/PrintWriter?
BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();
while(line!=null)
{
if(line is special)
do edits and p.println(edited_line);
else
p.println(line);
line = in.readLine();
}
Sin embargo, por alguna extraña razón, este proceso termina prematuramente (en realidad imprime una mitad de una línea) hacia el final de mi archivo de entrada. ¿Alguna razón obvia para esto? El ciclo while está siendo claramente terminado por un nulo. Y está hacia el final de mi archivo txt de línea de 250k +. ¡Gracias!
¿Estás absolutamente seguro de que no hay excepciones se están lanzando? ¿Qué harías si se arrojara una excepción *? ¿Sería registrado? –
Jon: no olvide que PrintWriter elimina excepciones: debe usar el método "checkError" para ver si ocurrió alguna. – MetroidFan2002
Sí, pero BufferedReader y FileReader no lo hacen, por lo que la llamada a readLine() podría haberse lanzado. –