但加密檔案,一定會動檔案作異動。這個時候若有可以監控指定目錄下的檔案異動程式,就可以得知是否有可疑的異動。以便使用者進一步作處理。
因此 File Monitor 這個程式,就是因應這樣的需求而作的。
本程式是用 Java 語言,在 Eclipse 下寫作而成。
1. 首先是大概確認使用案例,這裡用簡單的 UML Use case 表示

使用者可以有三個動作,一是執行或停止監控,一是設定指定監控目錄,最後則是設定選項,可以指定目錄、指定檔名過瀘、顯示訊息、撥放聲音檔、執行程式等。先實作紅色框的部分。
2.使用 Eclipse ,建立 FileMonitor 專案,並用 WindowBuilder 拉出如下的視窗

畫面分成三個部分,
上方 panel,放 Monitor Directory: 文字和按鈕等元件
中間 scrollPane,放顯示監控到的檔案異動 textArea
下方 textPane,顯示訊息
3. 實作檔案監控的部分,需要使用到 WatchService API ,可參考 Watching a Directory for Changes ,使用它所提供
WatchDir example,原程式是命令模式執行,並用 System.out 輸出訊息,因此要修改為接收一個 textArea 作輸出。此外,把 WatchDir 實作 Runnable 界面,這樣就可以用 Thread 起動。因此也需加上 run() 的實作部分。
4.在 UI 使用 WatchDir,主要增加 button 的動作。
btnStart = new JButton("Start");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
wd = new WatchDir(Paths.get(textField.getText()), true, textArea);
Thread t = new Thread(wd);
t.setDaemon(true);
t.start();
btnStart.setEnabled(false);
btnStop.setEnabled(true);
} catch (IOException e1) {
textPane.setText(e1.getMessage());
}
}
});
panel.add(btnStart);
btnStop = new JButton("Stop");
btnStop.setEnabled(false);
btnStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
wd.stopRunning();
btnStart.setEnabled(true);
btnStop.setEnabled(false);
}
});
panel.add(btnStop);
btnClear = new JButton("Clear");
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
panel.add(btnClear);
5. 實際的執行結果如下
沒有留言:
張貼留言