栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现文件变化监控

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现文件变化监控

一. spring配置文件:

application.xml



 

 
 
 
 

 
 
 

 

 
 

 

二. spring上下文加载监听器:

SpringContextLoaderListener.class

import javax.servlet.ServletContextEvent;
import org.springframework.web.context.ContextLoaderListener;
public class SpringContextLoaderListener extends ContextLoaderListener{
@Override
public void contextInitialized(ServletContextEvent event) {
super.contextInitialized(event);
FileMonitor scanner = getScanner();
// 启动目录扫描器
scanner.start();
}
@Override
public void contextDestroyed(ServletContextEvent event) {
FileMonitor scanner = getScanner();
// 关闭目录扫描器
scanner.stop();
super.contextDestroyed(event);
}

private FileMonitor getScanner() {
return getCurrentWebApplicationContext().getBean(FileMonitor.class);
}
}

三. web工程配置文件:

web.xml




contextConfigLocation

classpath:application.xml



com.web.SpringContextLoaderListener

四. 文件监测器

  1. 接口:FileMonitor.class

import org.apache.commons.io.monitor.FileAlterationObserver;

public interface FileMonitor {

void addObserver(FileAlterationObserver observer);

void removeObserver(FileAlterationObserver observer); 

Iterable getObservers(); 

void start(); 

void stop(); 

long getInterval(); 
}

  2. 实现类:FileMonitorImpl.class

import java.util.concurrent.ThreadFactory;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;

public class FileMonitorImpl implements FileMonitor{
private final FileAlterationMonitor monitor;

private static final String MONITOR_THREAD_NAME = "File MonITOR Daemon";

private static final boolean DAEMON = false;

FileMonitorImpl(int interval, final FileAlterationObserver observer) {
this(interval, observer, 
new BasicThreadFactory.Builder().
namingPattern(MONITOR_THREAD_NAME).daemon(DAEMON).build()); 
} 

FileMonitorImpl(int interval, final FileAlterationObserver observer, 
final ThreadFactory factory) { 
this.monitor = new FileAlterationMonitor(interval, new FileAlterationObserver[] { observer });
monitor.setThreadFactory(factory); 
} 

@Override
public void addObserver(FileAlterationObserver observer) {
monitor.addObserver(observer);
}

@Override
public void removeObserver(FileAlterationObserver observer) {
monitor.removeObserver(observer);
}

@Override
public Iterable getObservers() {
return monitor.getObservers();
}

@Override
public void start() {
try {
monitor.start();
} 
catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void stop() {
try {
monitor.stop();
} 
catch (Exception e) {
e.printStackTrace();
}
}

@Override
public long getInterval() {
return monitor.getInterval(); 
}
} 

五. 文件观察器

  1. 接口:FileObserver.class

import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListener;

public interface FileObserver {

void addListener(final FileAlterationListener listener);

void removeListener(final FileAlterationListener listener);

Iterable getListeners(); 

void initialize() throws Exception; 

void destroy() throws Exception; 

File getDirectory();

public FileFilter getFilter();
} 

  2. 实现类:FileObserverImpl.class

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationObserver;

public class FileObserverImpl extends FileAlterationObserver implements FileObserver{
private static final long serialVersionUID = -7239227289538993830L;

private final FileFilter filter;

public FileObserverImpl(String dir, final FileFilter filter, 
FileAlterationListener listener) {
super(dir, filter, (IOCase) null);
addListener(listener); 
this.filter = filter;
File directory = new File(dir);
// 如果目录不存在
if(!directory.exists()) {
try {
FileUtils.forceMkdir(directory);
} 
catch (IOException e) {
e.printStackTrace();
}
}
// 如果存在的是文件
else if(directory.exists() && directory.isFile()) {
try {
FileUtils.forceDelete(directory);
FileUtils.forceMkdir(directory);
} 
catch (IOException e) {
e.printStackTrace();
}
}
}

@Override
public void addListener(final FileAlterationListener listener) {
super.addListener(listener);
}

@Override
public void removeListener(final FileAlterationListener listener) {
super.removeListener(listener);
}

@Override
public Iterable getListeners() {
return super.getListeners();
}

@Override
public void initialize() throws Exception {
super.initialize();
}

@Override
public void destroy() throws Exception {
super.destroy();
}

@Override
public File getDirectory() {
return super.getDirectory();
}

public FileFilter getFilter() {
return filter;
} 
}

六. 文件监听器:

FileListener.class

import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;

public final class FileListener extends FileAlterationListenerAdaptor {

@Override
public void onFileCreate(File file) {
// To do something
}

@Override
public void onFileDelete(File file) {
// To do something
}

@Override
public void onFileChange(File file) {
// To do something
}

@Override
public void onStart(FileAlterationObserver observer) {
// To do something
}

@Override
public void onStop(FileAlterationObserver observer) {
// To do something
}
}

七. 文件过滤器

  1. 接口:FileFilter.class


public interface FileFilter extends java.io.FileFilter {

String[] getExtensions();
}

  2. 实现类:

FileFilterImpl.class

import java.io.File;
import org.apache.commons.io.FilenameUtils;

public class FileFilterImpl implements FileFilter{
private String[] extensions;
public FileFilterImpl(String... extensions) {
this.extensions = extensions;
}

@Override
public boolean accept(File pathname) {
return FilenameUtils.isExtension(pathname.getName(), extensions); 
}

@Override
public String[] getExtensions() {
return extensions;
}
}

以上所述是小编给大家介绍的Java实现文件变化监控,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/149419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号