?? detectthread.java
字號:
/**
*
*/
package com.justin.detect;
import java.io.*;
import com.justin.log.*;
import com.justin.config.*;
import com.justin.util.*;
/**
* @author Justin
*
*/
public class DetectThread extends Thread {
// 監測目標文件夾
private File detectDir;
// 監測器
private Detector detector;
// 日志
private LogServer logger;
// 配置文件管理器
private ConfigManager config;
// 監測間隔
private long detectInterval;
//
private String detectFileType;
private String markedFileType;
public DetectThread() {
logger = LogServer.getInstance();
config = ConfigManager.getInstance();
detectDir = new File(config.getStringProperty(ConfigManager.RECIEVED_DATA_DIR));
detectFileType = config.getStringProperty(ConfigManager.RECEIVED_FILE_TYPE);
markedFileType = config.getStringProperty(ConfigManager.MARKED_FILE_TYPE);
detector = new Detector(detectDir, detectFileType);
detectInterval = config.getLongProperty(ConfigManager.DETECT_INTERVAL_RECEIVED);
}
public void run() {
boolean isDir = detector.checkDir();
if (isDir) {
logger.showMessage("開始監控數據……");
logger.showMessage("");
while (true) {
if (detector.detect()) {
//記錄開始時間
long startTime = System.currentTimeMillis();
//
String[] fileNames = detector.getNewFileNames();
logger.showMessage("<-- 監測到新數據 于 " + UtilTool.getCurTime("yyyy-MM-dd HH:mm:ss") + " -->");
for(int i = 0; i < fileNames.length; i++ ){
logger.showMessage("(" + (i+1) + ") " + fileNames[i]);
String markedFileName = fileNames[i].replaceFirst(detectFileType, markedFileType);
if (!UtilTool.renameFile(detectDir.getPath(), fileNames[i], markedFileName)){
logger.showMessage("<--Failure: " + fileNames[i]+ " 標記失敗 -->");
}
}
logger.showMessage("<-- 處理一 數據備份 于 " + UtilTool.getCurTime("yyyy-MM-dd HH:mm:ss")
+ " -->");
for(int i= 0; i < fileNames.length; i++ ){
try {
String sourcePath = getSourcePath(fileNames[i]);
String backupPath = getBackupPath(fileNames[i]);
UtilTool.copyFile(sourcePath, backupPath);
logger.showMessage("(" + (i+1) + ") " + fileNames[i] + " 備份成功");
} catch (IOException ex) {
logger.showMessage("(" + (i+1) + ") " + fileNames[i] + " 備份失敗");
System.err.println(ex);
}
}
// 在此應觸發找到新文件的處理事件,待寫
//計算預處理用時
long endTime = System.currentTimeMillis();
logger.showMessage("<-- 數據預處理操完成 用時 " + getIntervalBySec(startTime, endTime) + " 秒 于 " + UtilTool.getCurTime("yyyy-MM-dd HH:mm:ss") + " -->");
logger.showMessage("");
}
try {
Thread.sleep(detectInterval);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
} else {
logger.showMessage("監測文件夾不存在");
}
}
private String getSourcePath(String fileName) {
return detectDir.getPath() + File.separator
+ fileName.replaceFirst(detectFileType, markedFileType);
}
private String getBackupPath(String fileName) {
//獲取備份時間戳
String backupTime = UtilTool.getCurTime("yyyy_MM_dd_HH_mm_ss");
//
int index = fileName.lastIndexOf(".");
String backupFileName = fileName.substring(0, index) + backupTime + "." + detectFileType;
String backupPath = config.getStringProperty(ConfigManager.DATA_BACKUP_DIR) + File.separator + backupFileName;
return backupPath;
}
private String getIntervalBySec(long startTime, long endTime){
String tmpStr = ((endTime - startTime)/1000.0) + "000";
int pos = tmpStr.indexOf(".");
return tmpStr.substring(0, pos+4);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -