
将文件的当前时间与上次修改时间进行比较,以确定是否需要再次读取文件,以便无需重新启动服务器即可获取修改后的参数.
软件包com.shp.util;
导入java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
导入java.util.Properties;
公共类LoadConfigUtil {
公共静态属性属性;
公共静态文件文件;
public static long lastModifyTime;
///服务器启动时将配置文件加载到内存中
静态{
LoadConfigUtil.load(“ fileName”);
}
/ **
*读取配置文件ifly文件怎么打开,并将属性列表加载到Properties对象中. 记录文件的最后修改时间.
* @param pathName文件路径
* /
公共静态空载(字符串路径名){
properties = new Properties();
FileInputStream fis = null;
file = new File(pathName);
尝试{
fis =新的FileInputStream(文件);
properties.load(fis);
//获取文件的最后更新时间
lastModifyTime = file.lastModified();

}捕获(IOException e){
// TODO自动生成的捕获块
e.printStackTrace();
}最后{
尝试{
fis.close();
}捕获(IOException e){
// TODO自动生成的捕获块
e.printStackTrace();
}
}
}
/ **
*获取配置文件的所有值
*确定文件是否已被修改. 是的ifly文件怎么打开,重新读取配置文件并返回否,从属性中获取
* @param fileName配置文件路径
* @return
* /
公共静态字符串getAllValues(String fileName){
file = new File(fileName);
//判断文件是否已修改
if(file.lastModified()> lastModifyTime){
System.out.println(“文件已被修改,需要重新加载!”);
load(fileName);
}
集合
String v = values.toString();
返回v;

}
/ **
*获取配置文件密钥的值
*确定文件是否已被修改. 是的,重新读取配置文件并返回否,从属性中获取
* @param键的键名
* @return
* /
公共静态String get(字符串键){
file = new File(“配置文件路径”);
//判断文件是否已修改
if(file.lastModified()> lastModifyTime){
System.out.println(“文件已被修改,需要重新加载!”);
load(“ pathName”);
}
返回properties.getProperty(键);
}
}
--------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------
使用Quartz定期检查是否根据设置的时间间隔修改了配置文件. 如果已修改,请重新阅读
软件包com.shp.util;
导入java.util.Date;
导入org.quartz.CronScheduleBuilder;
导入org.quartz.JobBuilder;
导入org.quartz.JobDetail;
导入org.quartz.Scheduler;
import org.quartz.SchedulerException;
导入org.quartz.SchedulerFactory;
导入org.quartz.Trigger;

导入org.quartz.TriggerBuilder;
导入org.quartz.impl.StdSchedulerFactory;
导入com.shp.test.watchService.CronJob;
公共类RAMQuartzUtil {
公共静态无效startTask(字符串键,字符串值)抛出SchedulerException {
// 1.为Scheduler创建工厂
SchedulerFactory sf =新的StdSchedulerFactory();
// 2.从工厂获取调度程序实例
Scheduler scheduler = sf.getScheduler();
// 3.创建JobDetail
JobDetail jd = JobBuilder.newJob(CronJob.class).withDescription(“这是ram作业”). withIdentity(“ ramjob”,“ ramgroup”). build();
//将更多信息存储在jobDataMap中,易于在execute方法中获取
jd.getJobDataMap(). 放(键,值);
//任务运行时间,SimpleSchedle类型触发器有效
长时间= System.currentTimeMillis()+ 3 * 1000L; // 3秒后开始任务
Date startTime =新日期(时间); //将时间戳转换为标准时间// 4.创建触发器
//使用SimpleScheduleBuilder或CronScheduleBuilder
Trigger t = TriggerBuilder.newTrigger(). withDescription(“”). withIdentity(“ ramTrigger”,“ ramTriggerGroup”)
.startAt(startTime).withSchedule(CronScheduleBuilder.cronSchedule(“ 0/2 * * * *?”)). build();
// 5.注册任务和计时器
scheduler.scheduleJob(jd,t);
// 6.启动调度程序
scheduler.start();
}
}
--------------------------------------------------- -------------------------------------------------- ------------------------
软件包com.shp.test.watchService;
导入org.quartz.Job;

导入org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.shp.util.LoadConfigUtil;
公共类CronJob实现Job {
@Override
公共无效执行(JobExecutionContext上下文)引发JobExecutionException {
// TODO自动生成的方法存根
字符串值= context.getJobDetail(). getJobDataMap(). getString(“ fileName”);
//获取配置文件的所有值
字符串值= LoadConfigUtil.getAllValues(值);
//获取与配置文件相对应的密钥的值
字符串值= LoadConfigUtil.get(key);
System.out.println(“ values =” =“ + values);
}
}
--------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------
测试
软件包com.shp.test.watchService;
import org.quartz.SchedulerException;
import com.shp.util.LoadConfigUtil;
导入com.shp.util.RAMQuartzUtil;
公共类Demo3 {
私有静态字符串键=“ fileName”;
private static String value =“ E: \\ aa \\ config.ini”;
公共静态void主对象(字符串[] args)抛出InterruptedException,SchedulerException {
LoadConfigUtil.load(值);
RAMQuartzUtil.startTask(键,值);
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-156820-1.html
拉森”号驱逐舰为美“阿利·伯克”级导弹驱逐舰中的第32艘