Me hubiera gustado estrenarme en este foro respondiendo a alguna duda pero me temo que no va a ser asi.
Llevo un par de días peleándome con la lectura - escritura de fichers en Java y he llegado a un punto en el que veo que no avanzo. La cuestión es que para ctualizar los datos de un fichero de texto intento guardar el contenido modificado en un BufferedWriter y después volcarlo sobreescribiendo lo anterior.
Esta es parte del código de la función:
Código:
Según los resultados y las trazas de log, fichLectura.ready() SIEMPRE devuelve false, y no logro averiguar porqué, anteriormente utilizando un FileWriter no me pasaba pero tampoco podía modificar adecuandamente el fichero ya que necesito escribir entremedias.private Integer operar(String clave, boolean incremento) {
Integer visitas = 0;
String linea;
StringTokenizer palabra = null;
boolean existe = false;
try {
abrir();
if (fichLectura.ready()) {
log4j.info("P1.1.1");
while (((linea = fichLectura.readLine()) != null) && (existe == false)) {
log4j.info("P1.While");
if (linea.startsWith(clave)) {
existe = true;
log4j.info("P1.While-if");
palabra = new StringTokenizer(linea, "");
palabra.nextToken();
visitas = Integer.parseInt(palabra.nextToken().trim());
if (incremento){
log4j.info("P2.While-if - visitas: " + visitas);
visitas++;
fichEscritura.append(clave + " " + visitas + "\n");
log4j.info("P2.While-if - visitas: " + visitas);
}
} else {
fichEscritura.append(linea + "\n");
}
}
}
if (existe == false){
log4j.info("P1.2.1 - Nuevo registro");
fichEscritura.append(clave + " 0" + "\n");
}
} catch (IOException e) {
log4j.error("Error de entrada-salida", e);
} catch (Exception e) {
log4j.error("ERROR", e);
} finally {
try {
cerrar();
} catch (IOException e) {e.printStackTrace();}
}
return visitas;
}
La función abrir, crea los nuevos canales de lectura-escritura y la función close hace flush() de FichEscritura y cierra ambos canales.
A ver si alguien me puede ayudar.Gracias de antemano!


