日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 监控 配置 文件怎么打开_java实现文件变化监控的方法(推荐)

發布時間:2024/7/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 监控 配置 文件怎么打开_java实现文件变化监控的方法(推荐) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. spring配置文件:application.xml

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context" xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"

xmlns:jaxrs="http://cxf.apache.org/jaxrs"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd

http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">

class="com.interfaces.file.monitor.FileMonitorImpl">

class="com.interfaces.file.monitor.FileObserverImpl">

class="com.interfaces.file.monitor.FileListener"/>

class="com.interfaces.file.monitor.FileFilterImpl">

二. 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);

}

/**

* 獲取目錄掃描器

* @return

*/

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 {

/**

* 注冊觀察器

* @param observer 觀察器

*/

void addObserver(FileAlterationObserver observer);

/**

* 刪除觀察器

* @param observer 觀察器

*/

void removeObserver(FileAlterationObserver observer);

/**

* 獲取注冊的所有觀察器

* @return 觀察器集合

*/

Iterable getObservers();

/**

* 啟動監測器

*/

void start();

/**

* 停止監測器

*/

void stop();

/**

* 獲取監測間隔時間

* @return 間隔時間(單位:毫秒)

*/

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

/**

* 監測器線程Daemon標記

*/

private static final boolean DAEMON = false;

/**

* 定義監測時間間隔、文件觀察器

* @param interval 監測時間間隔

* @param observer 文件觀察者

*/

FileMonitorImpl(int interval, final FileAlterationObserver observer) {

this(interval, observer,

new BasicThreadFactory.Builder().

namingPattern(MONITOR_THREAD_NAME).daemon(DAEMON).build());

}

/**

* 定義監測時間間隔、文件觀察器和線程工廠

* @param interval 監測時間間隔

* @param observer 文件觀察器

* @param factory 線程工廠

*/

FileMonitorImpl(int interval, final FileAlterationObserver observer,

final ThreadFactory factory) {

this.monitor = new FileAlterationMonitor(interval, new FileAlterationObserver[] { observer });

monitor.setThreadFactory(factory);

}

/**

* 添加文件觀察器

* @param observer

*/

@Override

public void addObserver(FileAlterationObserver observer) {

monitor.addObserver(observer);

}

/**

* 刪除文件觀察器

* @param observer

*/

@Override

public void removeObserver(FileAlterationObserver observer) {

monitor.removeObserver(observer);

}

/**

* 獲取注冊的所有觀察器

* @return

*/

@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 {

/**

* 添加監聽器

* @param listener

*/

void addListener(final FileAlterationListener listener);

/**

* 刪除監聽器

* @param listener

*/

void removeListener(final FileAlterationListener listener);

/**

* 獲取注冊的監聽器

* @return

*/

Iterable getListeners();

/**

* 初始化觀察器

* @throws Exception

*/

void initialize() throws Exception;

/**

* 銷毀觀察器

* @throws Exception

*/

void destroy() throws Exception;

/**

* 獲取觀察的目錄

* @return

*/

File getDirectory();

/**

* 獲取文件過濾器

*

* @return

*/

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;

/**

* 設置要監聽觀察的目錄,并設置文件過濾器和監聽器,用以觀察指定具有指定擴展名的文件

* @param dir 觀察監聽的目錄

* @param filter 文件過濾器

* @param listener 文件監聽器

*/

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();

}

/**

* 獲取文件過濾器

* @return

*/

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

/**

* 文件過濾器角色,擴展自java.io.FileFilter

*/

public interface FileFilter extends java.io.FileFilter {

/**

* 獲取定義的擴展名

*

* @return

*/

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

}

/**

* 獲取定義的擴展名

* @return

*/

@Override

public String[] getExtensions() {

return extensions;

}

}

以上這篇java實現文件變化監控的方法(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的java 监控 配置 文件怎么打开_java实现文件变化监控的方法(推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。