ciao!
vorrei impostare un blocco su file in modo da non poter lanciare due volte lo stesso programma contemporaneamente.
ho fatto una cosa così:
il file lock.clk viene creato e cancellato correttamente.codice:public class Locker { private static final File file = new File("lock.clk"); private static FileChannel channel = null; private static FileLock fileLock = null; private static boolean isLocked = false; public static boolean lock() throws FileNotFoundException, IOException { if (!file.exists()) { file.createNewFile(); channel = new RandomAccessFile(file, "rw").getChannel(); fileLock = channel.tryLock(); if (fileLock == null) { isLocked = true; } } return isLocked; } public static void unlock() throws IOException { fileLock.release(); channel.close(); file.delete(); isLocked = false; } public static boolean isLocked() { return isLocked; } }
solo che posso cmq lanciare più volte lo stesso programma, come se il lock non venisse fatto.
lo richiamo così nel jframe:
dove sto sbagliando secondo voi??codice:public static void main(String args[]) throws FileNotFoundException, IOException { if (!Locker.isLocked()) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new Main().setVisible(true); } }); Locker.lock(); } else { JOptionPane.showMessageDialog(null, "Il file è bloccato da un altro processo"); } }

Rispondi quotando

