java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

java的FileChannel 方法,控制文件锁定

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

}


This entry was posted in JAVA and tagged . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/java-filechannel/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply