📄 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 + -