Ú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.

Os dejo aquí para que os descarguéis el proyecto de netbeans.

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

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *