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!