FileChannel方法,可以用来执行文件锁定。利用这个方法可以有效控制同一台机器,同时启动同一个程序,多次。
当然,你也可以用在其他地方。
月小升当初写这个程序的目的在于控制人为在一台机器多次启动同一个程序。等于给程序上了一把锁
执行方法
FileLock.lock("/a.txt");
package com.javaer.project;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
/**
* 创建文件锁lock
* @author 月小升 *
*/
public class FileLock {
public static void lock(String file){
if(!FileLock.isValid(file)){
System.out.println("has a project is running");
System.exit(0);
}
}
/**
* 文件锁定模式,返回true表示可以执行,false表示不可以。
* @param fileName 文件锁路径
* @return true or false;
*/
public static boolean isValid(String fileName) {
File file = new File(fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
System.out.println("creat lock file error " + e.getMessage());
return false;
}
}
file = new File(fileName);
FileChannel channel = null;
try {
channel = new RandomAccessFile(file, "rw").getChannel();
} catch (FileNotFoundException e1) {
System.out.println("creat FileChannel error " + e1.getMessage());
return false;
}
try {
Object L = channel.tryLock();
if(L==null){
return false;
}else{
return true;
}
} catch (Exception e) {
return false;
}
}
}