JAVA自動監聽檔案內容
自動監聽器 PropertiesListener
自動監聽時鐘 PropertiesTimerimport javax.servlet.*; /** * 自動監聽器 * */ public class PropertiesListener implements ServletContextListener { /** * 自動監聽時鐘 */ private PropertiesTimer rt = null; public void contextInitialized(ServletContextEvent event) { String status = "Properties listener start ."; event.getServletContext().log(status); System.out.println(status); // 啟用自動監聽時鐘 rt = new PropertiesTimer(15, event.getServletContext()); rt.start(); } public void contextDestroyed(ServletContextEvent event) { String status = "Properties listener stop ."; event.getServletContext().log(status); System.out.println(status); // 停止自動監聽時鐘 if (rt != null) { rt.stop(); } } }
import java.util.*; import javax.servlet.*; /** * 自動監聽時鐘 * */ public class PropertiesTimer { private final Timer timer = new Timer(); private final int sec; private ServletContext context = null; public PropertiesTimer(int seconds, ServletContext context) { sec = seconds; this.context = context; } /** * 啟動自動監聽任務 */ public void start() { // 取得當前日期時間 Date date = new Date(); // 執行自動監聽計劃 timer.schedule(new PropertiesTask(this.context), date, sec * 1000); } /** * 停止自動監聽任務 */ public void stop() { timer.cancel(); } }
自動監聽任務 PropertiesTask
import java.io.IOException; import java.io.*; import java.util.*; import javax.servlet.*; /** * 自動監聽任務 * @author stephen * */ public class PropertiesTask extends TimerTask { private ServletContext context = null; /** * 配置檔案的最後更新時間 */ private long lastModified = 0; /** * 構造一個自動更新任務 * @param context */ public PropertiesTask(ServletContext context){ this.context = context; System.out.println("A task instance is created now."); // 任務在整個 application 週期內只建立一次。 } /** * 每次執行任務時顯示一個隨機數。 */ public void todoTestRandom(){ System.out.println("Task running"); context.setAttribute("random", String.valueOf(Math.random())); System.out.println((String)context.getAttribute("random")); } /** * 監聽配置檔案是否被更新。 */ public void todoTestFileStatus(){ System.out.println("Getting file status"); System.out.println(this.isFileUpdated("WEB-INF/platforms/test.properties")); } /** * 監聽配置檔案是否被更新,自動更新檔案中的配置項儲存到 application 變數中。 */ public void todo(){ String filename = "WEB-INF/platforms/test.properties"; if(this.isFileUpdated(filename)){ System.out.println("Getting properties"); try{ this.loadProperties("test", filename); }catch(IOException ioe){ System.err.println(ioe.getMessage()); } } System.out.println("Test value is: " + this.getTestProperty("name")); } public void run() { todoTestRandom(); todo(); //todo(); } /** * 判斷物理檔案是否已被更新 * @param filename 物理檔名 * @return 是 true 否 false */ private boolean isFileUpdated(String filename){ File file = new File(context.getRealPath(filename)); if(file.isFile()){ long lastUpdateTime = file.lastModified(); if(lastUpdateTime > this.lastModified){ System.out.println("The properties file was modified."); this.lastModified = lastUpdateTime; return true; }else{ System.out.println("The properties file was not modified."); return false; } }else{ System.out.println("The path does not point to a file."); return false; } } /** * 獲取配置檔案 * @param key * @param filename * @return */ public void loadProperties(String key, String filename) throws IOException{ Properties prop = new Properties(); InputStream stream = context.getResourceAsStream(filename); prop.load(stream); if(stream!=null){ stream.close(); } context.setAttribute(key, prop); } /** * 從 application 取配置項的值 * @param key 配置項的鍵名 * @return 配置項的值 */ public String getTestProperty(String key){ Properties prop = (Properties)context.getAttribute("test"); if(prop==null){ return null; }else{ return (String)prop.get(key); } } }
web.xml 配置
<?xml version="1.0" encoding="GB18030"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<listener>
<listener-class>org.stephencat.listener.PropertiesListener</listener-class>
</listener>
</web-app>
相關推薦
JAVA自動監聽檔案內容
自動監聽器 PropertiesListener import javax.servlet.*; /** * 自動監聽器 * */ public class PropertiesListener implements ServletContextListene
設定Flume監聽檔案內容
應用場景 按照Hadoop完全分散式安裝Flume博文,測試使用了Flume監聽資料夾,當資料夾中添加了檔案,Flume設定會立馬進行收集資料夾中的新增的檔案,那麼這是一種應用場景,但是如果我們想收集檔案中的內容,該如何辦呢?比如,linux目錄下有一個檔案,我會往這個檔案裡不斷的新增內容,那麼
JAVA自動監聽程式
package com.insenz.video;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.ServletContextListener
JAVA 專案監聽檔案是否發生變化
1、Spring容器都初始化完成之後做操作 package com.luwen.dai; import org.springframework.beans.factory.annotation.Autowired; import org.springframewo
時時監聽input內容的改變
強人 tint doc 獲取 interval ons cti keypress span 心得:我們都知道inoput有一個change事件,但是是在input元素失去焦點的時候發生,不能時時的監聽input內容的改變。 剛開始的時候我是想用setInterval
java實時監聽日誌寫入kafka
put article -c exti tab round 1.5 valueof max 目的 實時監聽某目錄下的日誌文件,如有新文件切換到新文件,並同步寫入kafka,同時記錄日誌文件的行位置,以應對進程異常退出,能從上次的文件位置開始讀取(考慮到效率,這裏是每
Javascript----input事件實現動態監聽textarea內容變化
span oninput idt ava ntb ima property onchange pre 1、代碼 <!DOCTYPE html> <html> <head> <title>textarea輸入文字監聽
Java事件監聽機制與觀察者設計模式
idea demo1 script 操作 alt face ner over 方法 一. Java事件監聽機制 1. 事件監聽三要素: 事件源,事件對象,事件監聽器 2. 三要素之間的關系:事件源註冊事件監聽器後,當事件源上發生某個動作時,事件源就會調用事件監聽的一個方法,
python 使用生成器 來完成 監聽檔案輸入的例子
def tail(filename):#函式 f = open(filename,encoding='utf-8') while True: line = f.readline() if line.strip(): yield line.strip() g = tail('file')#引用 設定檔
node-sass 生成sourcemap/監聽檔案
node-sass 生成sourcemap/監聽檔案 0.無關緊要的叨叨(可跳過) 遇到問題->> 不知道怎麼用node-sass生成sourcemap檔案,我本地的ruby環境下是可以直接生成的 但是現在做的專案就是要求把之前用ruby編譯的saas檔案全部改成
自定義JAVA事件監聽機制
JAVA中的事件機制的參與者有3種角色:Event、EventSource、Listener 1.Event:就是事件產生時具體的“事件”,用於Listener的相應的方法之中,作為引數一般存在於Listener的方法之中。 2.EventSource:事件源,它的作用主要是對事件和監聽進行
通過jna簡單實現java後臺監聽鍵盤觸發修改系統時間
由於玩某網遊需要在出副本時等一分鐘,而修改系統時間+1分鐘可以提前出副本,避免麻煩寫了個java後臺監聽鍵盤觸發修改系統時間的指令碼,當按下設定好的鍵盤組合即呼叫修改函式。 修改時間的函式程式碼如下(呼叫CMD命令):
java Api 讀取HDFS檔案內容
package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.*; public class HDFSApi { /** * 讀取檔案內
監聽webbrowser內容改變
論壇上一位朋友發貼想實現這樣功能:在webbrowser(編輯狀態)中輸入@,然後能捕獲隨後輸入的幾個字元。貼子見: https://bbs.csdn.net/topics/390995682?page=1#post-403542646 監聽鍵盤事件有兩個缺陷: 1.它只能監
gulp構建專案(三):gulp-watch監聽檔案改變、新增、刪除
一、gulp.watch()功能介紹 舉例說明:當’./src/*.html’發生變化時,執行’html’任務,同時重新整理瀏覽器。如下: gulp.task('watch', function(){ gulp.watch('./src/*.
Java 自動讀取json檔案轉化為實體類
思路: 1 建立一個輔助類,與json檔案和轉化實體類分別建立對應關係 2 建立輔助類的註解屬性與json檔案屬性對應 3 輔助類欄位屬性與實體類相同 具體需求 json檔案 {"Main": {"TestNo": "30103182222","appliName": "大小
Java之讀取XML檔案內容
下面是我的Persons.xml檔案內容: <?xml version="1.0" encoding="utf-8"?> <persons> <person id="0
Java 自動判斷配置檔案是否已經存在,如果不存在自動建立,如果存在直接讀寫
try { pro.load(new BufferedInputStream(new FileInputStream("config.ini"))); } catch (FileNotFoundException e) { pro.put("GuestDefaultFloor", "10");
flume簡介與監聽檔案目錄並sink至hdfs實戰
場景 1. flume是什麼 1.1 背景 flume 作為 cloudera 開發的實時日誌收集系統,受到了業界的認可與廣泛應用。Flume 初始的發行版本目前被統稱為 Flume OG(original generation),屬於 clo
滾動條的監聽 與內容隨著滾動條動態載入
<!DOCTYPE html> <html> <head> <title>當滾動條滑到底部時自動載入內容</title> <meta http-equiv="Content-Type" con