最近做项目遇到以下问题做个总结:
项目用swing技术,项目中没有具体用户,管理员等角色,只是需要本机注册一下就可以使用,当购买过该产品的用户注册后可以使用,进入主窗体,
但是不能同时在一台机器上打开两个或多个主窗体。
具体实现思路如下:
当窗体初始化时,对一个filelock.lock 文件进行获取文件锁,锁住该文件,等到关闭该窗体的时候在释放锁,假如一个窗体已经打开,又重新打开,此时由于第一个窗体已经锁住了该文件,导致第二个窗体不能获取文件锁而出现异常。
具体代码:
package cn.sh.isid.common.framework.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class FileLockUtil {
private String fileName = "fileLock.lock";
private String currentDirectory = System.getProperty("user.dir");
private String fileSeparate = System.getProperty("file.separator");
private File f = null;
private RandomAccessFile raf = null;
private FileChannel fc = null;
private FileLock fl = null;
private FileWriter fr = null;
public boolean getFileLock()
{
boolean rtn = true;