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();
|
}
|
}
|
}
|