跳到主要內容

Java 監控某一目錄下檔案變化



一、若要監控某一目錄下檔案變化通常可以設定一段時間去遞迴尋訪該目錄下的子目錄,當然可以選擇自己撰寫,不過apache提供了一套Filewatcher的API,已經對監控的效能做了大幅的改善,因此可以使用這個API也免去自己撰寫的時間。
二、下載套件: http://commons.apache.org/proper/commons-io/download_io.cgi------>commons-io-2.4.jar

三、當然也可以藉由Mavan套件管理程式來下載,xml如下:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

四、首先建立一個類,名為FileListenerAdaptor並實作FileAlterationListener這個介面。

public class FileListenerAdaptor implements FileAlterationListener{

    @Override
    public void onStart(FileAlterationObserver fileAlterationObserver) {

    }

    @Override
    public void onDirectoryCreate(File file) {

    }

    @Override
    public void onDirectoryChange(File file) {

    }

    @Override
    public void onDirectoryDelete(File file) {

    }

    @Override
    public void onFileCreate(File file) {

    }

    @Override
    public void onFileChange(File file) {

    }

    @Override
    public void onFileDelete(File file) {

    }

    @Override
    public void onStop(FileAlterationObserver fileAlterationObserver) {

    }
}

五、上面包含了目錄創建、改變、刪除,檔案創建、改變、刪除,這幾個方法,也就是說我們可以在這裡撰寫當這些動作發生時要做什麼事,舉例來說,當一個檔案備建立時,需印出檔案的長度、修改日期、操作權限等,那麼就在onFileCreate寫下這些代碼:

@Override
public void onFileCreate(File file) {
    System.out.println(file.getAbsoluteFile() + " was created.");
    System.out.println("----------> length: " + file.length());
    System.out.println("----------> last modified: " + new Date(file.lastModified()));
    System.out.println("----------> readable: " + file.canRead());
    System.out.println("----------> writable: " + file.canWrite());
    System.out.println("----------> executable: " + file.canExecute());
}

六、接著實際來使用:

final File directory = new File("C:\\Users\\will\\Downloads");
FileAlterationObserver fao = new FileAlterationObserver(directory);
fao.addListener(new FileListenerAdaptor());
final FileAlterationMonitor monitor = new FileAlterationMonitor();
monitor.addObserver(fao);
try {
    monitor.start();
} catch (Exception e) {
    e.printStackTrace();
}

七、執行結果:

開始監聽
C:\Users\Administrator\Downloads\rubyinstaller-2.1.5 - 複製 - 複製.exe was created.
----------> length: 17568211
----------> last modified: Sun Jan 11 22:02:25 CST 2015
----------> readable: true
----------> writable: true
----------> executable: true

八、若要指定時間進行尋訪的話那麼在new FileAlterationMonitor時可以加入參數,其建構子接受interval這個參數

final FileAlterationMonitor monitor = new FileAlterationMonitor(500);

留言

這個網誌中的熱門文章

java西元民國轉換_各種不同格式

C#資料庫操作(新增、修改、刪除、查詢)

【Excel好好玩】 自己的資產自己管!善用Google Sheet來幫我們評估貸款

這次介紹的主題是關於Excel的貸款還款計畫試算,我們人生中總會遇到需要大筆金額的花費,但當資金不夠時就得進行貸款,而貸款之前如果我們能夠審慎評估,並分析自己的還款能力之後在進行凍作,相信風險會小很多,因此就自己動動手來使用Google Sheet進行試算吧! 基本資料 ● 貸款總額: 1000000 ● 貸款期數: 84月 ● 年利率: 2.11% ● 月利率: 0.18% P.S 月利率 = 年利率 / 12 重要函式 PMT : 這是Google Sheet內建的重要年金計算公式,我們可以善用這個公式來計算固定利率及期數的固定攤還本息。因為PMT函式計算出的結果為負數,所以前面加上-號轉成正數。 動手做 首先我們在Excel表上列出我們的基本資料 圖片來源 其中月利率的部分就使用公式「=B4/12」 接著我們填上第一列的期數跟餘額 圖片來源 =B2 =B3 使用關鍵PMT函數來計算本息的部分 因為PMT函式計算出的結果為負數,所以前面加上-號轉成正數。 -PMT(貸款利率(月利率), 貸款期數, 貸款總額) =-PMT($B$5,$B$3,$B$2) 圖片來源 計算利息 利息 = 貸款餘額 x 月利率 =B8*$B$5 圖片來源 計算本金 本金 = 本息 - 利息 =C8-D8 圖片來源 製作第二列餘額的部分 餘額的部分 = 上一期的餘額 - 上一期的本金 圖片來源 接著拖曳該兩列往下拉,即可查看每一期的利息與本金 圖片來源 結語 雖然市面上已經有很多貸款銀行都提供了試算功能,但如果我們想要進一步管理自己的資產時,就需要將每一期的金額給計算出來,因此才會將公式運用在Excel表,讓我們的資產管理表能夠結合負債,進一步評估我們理財行動的下一步,希望這樣的經驗可以幫助到正在理財道路上打拼的夥伴,讓我們透過有效的管理,幫助荷包長大吧! 喜歡撰寫文章的你,不妨來了解一下: Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入? 歡迎加入一起練習寫作,賺取知識,累積財富!