首页>代码>java检测lua脚本文件变化, 并自动重新载入>/LuaJavaDemo/src/com/gota/demo/lj/FileChangedChecker.java
package com.gota.demo.lj;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

public class FileChangedChecker {
	private String fileName;
	
	private MessageDigest md;
	
	private byte[] md5;
	private long lastModify;
	
	public FileChangedChecker(String fileName) {
		this.fileName = fileName;
		try {
			md = MessageDigest.getInstance("MD5");
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
	
	public boolean checkByModifyTime() {
		File file = new File(fileName);
		long curModify = file.lastModified();
		boolean isChanged = curModify != lastModify; 
		if(isChanged)
			lastModify = curModify;
		return isChanged;
	}
	
	public boolean checkByMd5() {
		FileInputStream in = null;
		boolean isChanged = false;
		try {
			in = new FileInputStream(fileName);
			byte[] buf = new byte[in.available()];
			md.update(buf);
			byte[] curMd5 = md.digest();
			isChanged = !Arrays.equals(curMd5, md5);
			if(isChanged) md5 = curMd5;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return isChanged;
	}
	
}
最近下载更多
rohgeo  LV1 2023年9月8日
x15000926787  LV1 2019年8月2日
Song ling  LV6 2019年6月25日
a3870764722a  LV22 2019年6月13日
lvgaojian  LV1 2019年5月23日
kingkick20  LV1 2018年2月8日
最代码官方  LV168 2017年6月11日
watfgzs  LV21 2014年11月30日
zxwxiao  LV14 2014年11月6日
terryang  LV19 2014年2月19日
最近浏览更多
rohgeo  LV1 2023年9月8日
adimgaoshou  LV10 2022年9月6日
huangjie123456  LV5 2022年4月22日
hekewen1  LV7 2021年5月6日
329512801  LV28 2020年5月26日
zx8861  LV3 2020年1月15日
ljcute  LV1 2020年1月7日
x15000926787  LV1 2019年8月2日
lcjz99  LV11 2019年7月3日
Song ling  LV6 2019年6月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友