Única instancia con un fichero en Java

Hola a todos, hoy os quiero explicar como podemos hacer una única instancia en Java usando un fichero.

Es normal que si tenemos una aplicación queramos que no se ejecute varias veces para evitar problemas al tener varias instancias.

Se puede hacer de varias formas, en este manual, vamos a explicar como hacerlo con ServerSocket.

 

La idea es que la primera vez que se ejecuta si existe un fichero concreto, lanzamos una excepción y sino existe lo creamos e indicamos que se borre al salir.

¿Como lo podemos hacer? Fácil.

Creamos un proyecto y me creo un JFrame.

public class Ventana extends javax.swing.JFrame {

    public Ventana() throws Exception {
        initComponents();
        
        File f=new File(".file-lock");
        if(f.exists()){
            throw new Exception("Unica instancia");
        }else{
            f.createNewFile();
            f.deleteOnExit();
        }
      
    }

   public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    new Ventana().setVisible(true);
                } catch (Exception ex) {
                    Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

}

Veamos el resultado:

No pasa nada porque dé error.

Espero que os sea de ayuda. Si tenéis dudas, preguntad, estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.