Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2014, 06:54
gt_int
 
Fecha de Ingreso: febrero-2013
Mensajes: 50
Antigüedad: 11 años, 2 meses
Puntos: 0
Problemas al escribir en un fichero

Buenas tardes a todos, estoy haciendo un programa Java y tengo un archivo de configuración donde incremento 2 contadores que me hacen falta para la aplicación, os pongo la clase:

Código Java:
Ver original
  1. import org.apache.commons.configuration.ConfigurationException;
  2. import org.apache.commons.configuration.HierarchicalINIConfiguration;
  3.  
  4. public class GrabadoFicheros{
  5.  
  6.     public HierarchicalINIConfiguration ficheroIncrementos;
  7.    
  8.     public GrabadoFicheros(){
  9.         try {
  10.             ficheroIncrementos = new HierarchicalINIConfiguration("D:\\incrementos.cfg");
  11.         } catch (ConfigurationException e) {
  12.             System.out.println(e.toString());
  13.         }
  14.     }
  15.    
  16.      public synchronized void setContadorA(int valor){
  17.           try{
  18.               ficheroIncrementos.getSection("incrementos").setProperty("contadorA", valor);
  19.               ficheroIncrementos.save();
  20.           }catch (Exception e){
  21.               System.out.println(e.toString());
  22.           }      
  23.       }  
  24.      
  25.      public synchronized void setContadorB(int valor){
  26.           try{
  27.               ficheroIncrementos.getSection("incrementos").setProperty("contadorB", valor);
  28.               ficheroIncrementos.save();
  29.           }catch (Exception e){
  30.               System.out.println(e.toString());
  31.           }      
  32.       }
  33. }



Y el contenido del archivo incrementos.cfg:

Código .CFG:
Ver original
  1. [incrementos]
  2. contadorA = 1
  3. contadorB = 2



Pues resulta que a veces cuando invoco al método setContadorA para que modifique el valor de la variable contadorA no lo hace.

Supóngase que la variable contadorA del archivo incrementos.cfg tiene el valor 1, pues cuando invoco al método y hago setContadorA(5) no modifica el valor por 5. No salta ninguna excepción, todo OK, pero no cambia el valor.

¿Por qué no cambia el valor?

¿Cómo podría saber si el archivo está siendo usado por otro método?

¿Cómo podría saber si el archivo está bloqueado en el momento que hago setContadorA(5)?


Muchas gracias de antemano.


Saludos.