Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2010, 05:19
salenak
 
Fecha de Ingreso: noviembre-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Problema escribiendo en fichero

Hola a tod@s!
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:
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;
	}
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.
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!