package homein; import java.io.File; import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.file.StandardOpenOption; public class WenJianSuo { private static FileLock lock; private static FileChannel channel; private static final String LOCK_FILE_NAME = "homein.lock"; // 检查程序是否已经运行 public static boolean isAlreadyRunning() { try { File lockFile = new File(LOCK_FILE_NAME); channel = FileChannel.open(lockFile.toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE); lock = channel.tryLock(); // 如果获取不到锁,说明程序已经在运行 return lock == null; } catch (IOException e) { return true; // 发生异常也认为程序已在运行 } } // 释放文件锁 public static void releaseLock() { try { if (lock != null) { lock.release(); } if (channel != null) { channel.close(); } // 删除锁文件 File lockFile = new File(LOCK_FILE_NAME); if (lockFile.exists()) { lockFile.delete(); } } catch (IOException e) { e.printStackTrace(); } } }