⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 detectthread.java

📁 java编写的监控一个文件夹里面有没有新的excel文件放入
💻 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 + -