Foro de elhacker.net

Programación => Java => Mensaje iniciado por: alzehimer_cerebral en 13 Julio 2010, 11:40 am



Título: Tipico caso de sobre-escritura de ficheros con el mismo nombre
Publicado por: alzehimer_cerebral en 13 Julio 2010, 11:40 am
Hola a todos,

estoy programando una funcion de "guardar" en la cual si varios ficheros tienen el mismo nombre debo comprobar si se quiere sobre escribir el fichero o no...

Los archivos con el mismo nombre los debo guardar en alguna estructura para poderlos mostrar al usuario en una JFrame, en dicha estructura debo almacenar el path del fichero local y el path del nuevo fichero en caso de que se elija la sobreescritura.  Que estructura dinamica es la mejor para almacenar ambos paths relacionandolos con un indice??

Salu2.

P.D Hay alguna clase Java que se encargue de gestionar esto??

alzehimer_cerebral


Título: Re: Tipico caso de sobre-escritura de ficheros con el mismo nombre
Publicado por: Leyer en 13 Julio 2010, 17:14 pm
usa java.util.Properties y llamas a  put("1","valor");

Un saludo.


Título: Re: Tipico caso de sobre-escritura de ficheros con el mismo nombre
Publicado por: alzehimer_cerebral en 20 Julio 2010, 13:54 pm
Al final he utilizado otra forma para hacerlo, ahora el problema lo tengo que cuando se da al boton "Guardar" y existe un archivo con el mismo nombre pues saco un JFrame para que el usuario elija si sobreescribir o ignorar.

El problema es que sale la ventana para que elija el usuario la accion que debe tomar pero el metodo "Guardar" saca el JFrame y continua su ejecucion hasta finalizar por lo tanto no tiene en cuenta la accion de sobre-escribir o ignorar el archivo con el mismo nombre...

Supongo que esto se arregla haciendo que un thread lanze el JFrame que le permite al usuario elegir la accion correspondiente y que hasta que esta accion no sea elegida no se devuelva el control al metodo "Guardar"...

La idea que quiero seguir es que el thread del metodo guardar se quede en wait(bloqueado) hasta el usuario elija una opcion del JFrame, en ese momento se hara un notify para despertar al hilo en wait.

El codigo que lanza el Jframe es el siguiente:

Código
  1.  
  2. System.out.println("ANTES OVERWRITE");
  3.                Overwrite overwrite = new Overwrite(local,remote);
  4.                overwrite.setVisible(true);
  5.                new Thread(overwrite).start();
  6.                synchronized(overwrite){
  7.                    try {
  8.                        this.wait();
  9.                    } catch (InterruptedException ex) {
  10.                        Logger.getLogger(RepositoryManagement.class.getName()).log(Level.SEVERE, null, ex);
  11.                    }
  12.                }
  13.                System.out.println("DESPUES OVERWRITE");
  14.  


La clase que lanza la ventana de conflictos tendria que tener la siguiente declaracion:

Código
  1. public class Overwrite extends javax.swing.JFrame implements Runnable{
  2.  
  3.    ................
  4.    }
  5.  
  6.  

El problema lo tengo a la hora de sincronizar el thread que ejecuta el metodo "Guardar" (1er bloque de codigo) y el JFrame overwrite... Alguien me puede guiar o echar una mano en la sincronizacion de dichos threads????

La idea seria frenar el thread de guardar hasta que el usuario establezca una accion en el JFrame Overwrite... 

He intentado esquematizar mi problema con el menor codigo posible, si alguien necesita saber un poco mas del codigo que me lo comente y lo posteo.

Salu2 y gracias de antemano.

alzehimer_cerebral


Título: Re: Tipico caso de sobre-escritura de ficheros con el mismo nombre
Publicado por: alzehimer_cerebral en 21 Julio 2010, 22:21 pm
Problema resuelto: utilizando un JDialog modal en vez de un JFrame.

El JDialog modal detiene la ejecucuion de la funcion que lo llama hasta que el JDialog se cierre.

Salu2.

alzehimer_cerebral