最近需求优化CPU时碰到的,记录下,闲话少直接上代码:
1.启动代码
public static void main(String[] args) {
FileListener FileListener = new FileListener();
boolean b = false;
if(!b){
try {
/** 启动文件监听 */
System.out.println("文件监听开始............");
String path = "F:\\mulu";
System.out.println("监听文件路径" + path);
FileMonitor m = new FileMonitor(5000);
m.monitor(path,FileListener);
m.start();
System.out.println("文件监听启动............");
} catch (Exception e) {
System.out.println("启动文件监听失败.........." + e.getMessage());
e.printStackTrace();
}
}
b = true;
}
2、文件动作展示代码
package org.mh.web.view.admin;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.mh.web.task.TaskReceiverRunnable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
//根据相关触发的行为,实现相关的业务
public class FileListener implements FileAlterationListener {
/**日志工厂*/
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void onStart(FileAlterationObserver observer) {
logger.info("onStart.............");
}
@Override
public void onDirectoryChange(File directory) {
logger.info("[目录修改]:" + directory.getName());
}
@Override
public void onDirectoryCreate(File directory) {
logger.info("[目录新建]:" + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
logger.info("[目录删除]:" + directory.getName());
}
@Override
public void onFileChange(File file) {
logger.info("[文件创建修改]: :" + file.getName());
}
@Override
public void onFileCreate(File file) {
logger.info("[文件新建执行]:" + file.getName());
}
@Override
public void onFileDelete(File file) {
logger.info("[文件删除]:" + file.getName());
}
@Override
public void onStop(FileAlterationObserver observer) {
logger.info("onStop............");
}
}
3、监控代码
package org.mh.web.view.admin;
import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
//观察,监控 文件变化
public class FileMonitor {
FileAlterationMonitor monitor = null;
public FileMonitor(long interval) throws Exception {
monitor = new FileAlterationMonitor(interval);
}
public void monitor(String path, FileAlterationListener listener) {
FileAlterationObserver observer = new FileAlterationObserver(new File(path));
monitor.addObserver(observer);
observer.addListener(listener);
}
public void stop() throws Exception{
monitor.stop();
}
public void start() throws Exception {
monitor.start();
}
}
需要相关架包,可网上自行搜索