Tipico caso de sobre-escritura de ficheros con el mismo nombre

Iniciado por alzehimer_cerebral, 13 Julio 2010, 11:40 AM

0 Miembros y 1 Visitante están viendo este tema.

alzehimer_cerebral

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
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

Leyer

#1
usa java.util.Properties y llamas a  put("1","valor");

Un saludo.

alzehimer_cerebral

#2
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 (java) [Seleccionar]


System.out.println("ANTES OVERWRITE");
                Overwrite overwrite = new Overwrite(local,remote);
                overwrite.setVisible(true);
                new Thread(overwrite).start();
                synchronized(overwrite){
                    try {
                        this.wait();
                    } catch (InterruptedException ex) {
                        Logger.getLogger(RepositoryManagement.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                System.out.println("DESPUES OVERWRITE");



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

Código (java) [Seleccionar]

public class Overwrite extends javax.swing.JFrame implements Runnable{

    ................
    }



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
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com

alzehimer_cerebral

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
Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com