spring boot +commons-io實現檔案監控
1、pom檔案
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.sun</groupId> <artifactId>cui-monitor</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies> </project>
2、FileListener
package cn.sunline.Listener; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j.Logger; import java.io.*; /** * Created by Rick on 2017/12/18. * * 檔案變化監聽器 * * 在Apache的Commons-IO中有關於檔案的監控功能的程式碼. 檔案監控的原理如下: * 由檔案監控類FileAlterationMonitor中的執行緒不停的掃描檔案觀察器FileAlterationObserver, * 如果有檔案的變化,則根據相關的檔案比較器,判斷檔案時新增,還是刪除,還是更改。(預設為1000毫秒執行一次掃描) * * */ public class FileListener extends FileAlterationListenerAdaptor { private Logger log = Logger.getLogger(FileListener.class); /** * 檔案建立執行 */ public void onFileCreate(File file) { log.info("[新建]:" + file.getAbsolutePath()); } /** * 檔案建立修改 */ public void onFileChange(File file) { log.info("[修改]:" + file.getAbsolutePath()); BufferedReader buf = null; try { buf = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK")); BufferedReader br = new BufferedReader(buf); String line = null; System.out.println(br.readLine()); } catch (IOException e) { e.printStackTrace(); } finally { // 這裡釋放系統 IO 資源 try {if (buf != null){buf.close();}}catch (Exception e){} } } /** * 檔案刪除 */ public void onFileDelete(File file) { log.info("[刪除]:" + file.getAbsolutePath()); } /** * 目錄建立 */ public void onDirectoryCreate(File directory) { log.info("[新建]:" + directory.getAbsolutePath()); } /** * 目錄修改 */ public void onDirectoryChange(File directory) { log.info("[修改]:" + directory.getAbsolutePath()); } /** * 目錄刪除 */ public void onDirectoryDelete(File directory) { log.info("[刪除]:" + directory.getAbsolutePath()); } public void onStart(FileAlterationObserver observer) { // TODO Auto-generated method stub super.onStart(observer); } public void onStop(FileAlterationObserver observer) { // TODO Auto-generated method stub super.onStop(observer); } }
3、啟動類
package cn.sunline; import cn.sunline.Listener.FileListener; import cn.sunline.controller.SampleController; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.filefilter.HiddenFileFilter; import org.apache.commons.io.filefilter.IOFileFilter; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j.Logger; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.io.*; import java.util.concurrent.TimeUnit; /** * Created by Rick on 2017/12/18. 自定義監控器 */ @EnableAutoConfiguration public class AppServer { final static Logger logger = Logger.getLogger(AppServer.class); public static void main(String[] args) throws Exception { SpringApplication.run(AppServer.class, args); System.out.println("*********************************啟動成功*********************************"); // 監控目錄 String rootDir = "D:\\test"; // 輪詢間隔 5 秒 long interval = TimeUnit.SECONDS.toMillis(1); // 建立過濾器 IOFileFilter directories = FileFilterUtils.and( FileFilterUtils.directoryFileFilter(), HiddenFileFilter.VISIBLE); IOFileFilter files = FileFilterUtils.and( FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".txt")); IOFileFilter filter = FileFilterUtils.or(directories, files); // 使用過濾器 FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter); //FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir)); observer.addListener(new FileListener()); //建立檔案變化監聽器 FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); // 開始監控 try{ monitor.start(); System.out.println("***************監控中***************"); } catch (Exception e){ logger.error("異常處理",e); } } }
4、執行效果
相關推薦
spring boot +commons-io實現檔案監控
1、pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww
使用ajax,Jquery,Spring Boot,MultipartFile實現檔案上傳功能
MultipartFile 方法總結 byte[] getBytes() 返回檔案的內容作為一個位元組陣列。 String getContentType()&nbs
工具類commons-io的檔案監控
一、前言: 使用Commons-io的monitor下的相關類可以處理對檔案進行監控,它採用的是觀察者模式來實現的 1、可以監控資料夾的建立、刪除和修改 2、可以監控檔案的建立、刪除和修改 3、採用的是觀察者模式來實現的 4、採用執行緒去定時去刷現檢測檔案的變化情況 二、程
spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(三)
SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二)
spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二)
SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二)
spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一)
SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二) spring-boot-ad
Spring Boot整合Druid實現資料來源管理與監控
1. 引言 在程式設計師的日常工作中, 經常需要編寫資料庫操作相關的程式,而這就需要資料連線池中介軟體用於管理資料庫連線。資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閒時間超過最大空閒時間
Spring boot——helloworld例子實現
and eba -exec odin url 工程目錄 cnblogs per simple 軟件152 緱旭浩 1.新建maven項目,package方式為war. 使用maven的時候,maven會從倉庫中下載依賴的jar包。 新建Maven Pr
Spring-boot和kafka實現消息發送器
pla res 實現 sage 發送 temp warn pre autowire 1,配置kafakaproducer和consummer。 2,發送消息通過回調的方式處理發送成功或者失敗。 public class Sender { Logger log =
spring-boot-starter-actuator(健康監控)配置和使用
frame maven git 追蹤 包括 屬性 per dump zookeepe 在生產環境中,需要實時或定期監控服務的可用性。Spring Boot的actuator(健康監控)功能提供了很多監控所需的接口,可以對應用系統進行配置查看、相關功能統計等。 集成:
spring boot 利用redisson實現redis的分布式鎖
代碼 sched 技術 商品 onf 定義 必須 配置線 oracle 原文:http://liaoke0123.iteye.com/blog/2375469 利用redis實現分布式鎖,網上搜索的大部分是使用java jedis實現的。 redis官方推薦的分布式
Spring Boot使用@Async實現異步調用:自定義線程池
tor color HR cal ace 核心 異步 cond cor 前面的章節中,我們介紹了使用@Async註解來實現異步調用,但是,對於這些異步執行的控制是我們保障自身應用健康的基本技能。本文我們就來學習一下,如果通過自定義線程池的方式來控制異步調用的並發。 定
Spring Boot + MyBatis + Thymeleaf實現簡單留言板應用
crud pro 點擊 htm drop lang data cati col Spring Boot + MyBatis + Thymeleaf實現簡單留言板應用 本項目主要介紹使用Spring Boot + MyBatis + Thymeleaf + Bootstrap
Spring Boot使用AOP實現攔截某個方法
ces 文件 commit ransac dex red code join info 1、引入.jarl文件依賴 <!-- Spring Boot Web 依賴 --> <dependency>
Spring boot 配置https 實現java通過https介面訪問
近來公司需要搭建一個https的伺服器來除錯介面(伺服器用的spring boot框架),剛開始接觸就是一頓百度,最後發現網際網路認可的https安全連結的證書需要去CA認證機構申請,由於是除錯階段就採用了java的keytool工具來生成金鑰檔案
spring boot多環境配置檔案讀取不到的問題。
程式碼架構: 其中application.yaml中就三行程式碼: 作用是在IED啟動的時候指定當前環境。 但是其實我不是這麼做的,而是在idea中指定。 產生問題: 引入了一個自己寫的starter[jar包],jar包中配置了test環境的配置。但是專案啟動的時候指定了prof
基於Fourinone實現檔案監控
一、 任務簡介 建立兩臺Ubuntu虛擬機器,部署fourinone。一個主節點一個從節點,從節點監控某資料夾下檔案資訊,對一天內被修改十次以上的檔案進行轉移,轉移到主節點某目錄下。 二、 思路 從節點開啟一個監控執行緒,每三秒
Spring Boot使用AOP實現REST接口簡易靈活的安全認證
all 高級 mes 之前 接口 封裝 msg mage ror 本文將通過AOP的方式實現一個相對更加簡易靈活的API安全認證服務。 我們先看實現,然後介紹和分析AOP基本原理和常用術語。 一、Authorized實現1、定義註解 package com.power.de
程式設計實戰篇——Spring Boot 自動配置實現
基於Spring Boot自動配置的思想封裝起來,使其他Spring Boot專案引入後能夠進行快速配置。AutoConfiguration Spring Boot的一個重要特性就是提供了各種各樣的AutoConfiguration。例如DataSourceAutoConfiguration。這樣我們只需要在
Spring Boot中注入配置檔案application.properties中的list 物件引數
例如要注入下列引數: dyn.spring.datasources[0].name=branchtadyn.spring.datasources[0].driverClassName=oracle.jdbc.OracleDriverdyn.spring.datasources[0].url=jdbc:ora