diff options
| author | chenjinsong <[email protected]> | 2018-09-27 16:11:54 +0800 |
|---|---|---|
| committer | chenjinsong <[email protected]> | 2018-09-27 16:11:54 +0800 |
| commit | 56d71f261a8bd6031e47e2bf80867049a2aa13da (patch) | |
| tree | f09257b2143782a333a9eda3395137837d9bdad1 /src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java | |
initial commit
Diffstat (limited to 'src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java')
| -rw-r--r-- | src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java b/src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java new file mode 100644 index 0000000..dd68c3e --- /dev/null +++ b/src/com/nis/nmsclient/thread/timer/DelLocalFileThread.java @@ -0,0 +1,197 @@ +package com.nis.nmsclient.thread.timer; + +import java.io.File; +import java.io.IOException; +import java.util.Date; + +import org.apache.commons.io.FileUtils; +import org.apache.log4j.Logger; + +import com.nis.nmsclient.common.Contants; +import com.nis.nmsclient.util.DateUtil; +import com.nis.nmsclient.util.FileUtil; +import com.nis.nmsclient.util.Utils; +import com.sun.org.apache.bcel.internal.generic.NEW; + +public class DelLocalFileThread implements Runnable { + Logger logger = Logger.getLogger(DelLocalFileThread.class); + private String name; + + public DelLocalFileThread(String name){ + this.name = name; + } + + @Override + public void run() { + Thread.currentThread().setName(name); + delLogFile(); + delDataFile(); + delTempFile(); + delUpgradeFile(); + + } + + /** + * 删除日志文件 + */ + public void delLogFile() { + long curDate = System.currentTimeMillis(); + // 删除指定天数之前的日志文件 + File logs = new File(Contants.localLogsPath); + if (!logs.exists() || !logs.isDirectory()) { + return; + } + for (File f : logs.listFiles()) { + long diff = DateUtil.getDaysFromBeginToEnd(f.lastModified(), + curDate); + + if (f.isFile() && diff > Contants.COMMON_DEL_LOG_DAYS) { + //f.delete_bak(); + //使用删除文件公共方法 + FileUtil.delDir(f); + logger.info("删除日志文件" + f.getAbsolutePath()); + //FileUtil.checkParentDirExist(f); + } + } + + } + + /** + * 清理数据文件(包括监测数据和任务文件) + */ + public void delDataFile(){ + long curDateMillis = System.currentTimeMillis(); + // == 1、删除指定分钟之前的所有监测文件 + File doneFile = new File(Contants.localDataDonePath); + if (doneFile.exists()) { + //---删除打包上传的数据 + long timeMillis = curDateMillis - Contants.COMMON_DEL_DATA_HOURS + * 60 * 60 * 1000; + File[] files = FileUtil.getFilesEndWithBeforeMillis(doneFile, ".zip", + timeMillis); + if (files != null && files.length > 0) { + for (File f : files) { + FileUtil.delDir(f); + logger.debug("delDataFile 删除打包文件--" + f.getAbsolutePath()); + } + } + //---删除正常上传的数据文件 + File[] doneDirs = FileUtil.getDirectoryArray(doneFile); + delDataFileCallBack(curDateMillis, doneDirs, Contants.COMMON_DEL_DATA_HOURS); + } + File errorFile = new File(Contants.localDataErrorPath); + if (errorFile.exists()) { + File[] errorDirs = FileUtil.getDirectoryArray(errorFile); + delDataFileCallBack(curDateMillis, errorDirs, Contants.COMMON_DEL_DATA_HOURS); + } + + // == 2、删除指定分钟之前的所有任务相关的文件 + doneFile = new File(Contants.localTaskDonePath); + if (doneFile.exists()) { + //---删除打包上传的任务结果和回传文件 + long timeMillis = curDateMillis - Contants.COMMON_DEL_TASK_HOURS + * 60 * 60 * 1000; + File[] files = FileUtil.getFilesEndWithBeforeMillis(doneFile, ".zip", + timeMillis); + if (files != null && files.length > 0) { + for (File f : files) { + FileUtil.delDir(f); + logger.debug("delDataFile 删除打包文件2--" + f.getAbsolutePath()); + } + } + //---删除正常上传的任务结果和回传文件 + File[] doneDirs = FileUtil.getDirectoryArray(doneFile); + delDataFileCallBack(curDateMillis, doneDirs, Contants.COMMON_DEL_TASK_HOURS); + } + errorFile = new File(Contants.localTaskErrorPath); + if (errorFile.exists()) { + File[] errorDirs = FileUtil.getDirectoryArray(errorFile); + delDataFileCallBack(curDateMillis, errorDirs, Contants.COMMON_DEL_TASK_HOURS); + } + } + + /** + * 清理数据文件的递归回调函数 + */ + public void delDataFileCallBack(long curDateMillis, File[] dirs, int delHours) { + if (dirs == null || dirs.length == 0) { + return; + } + for (File dir : dirs) { + long timeMillis = curDateMillis - delHours + * 60 * 60 * 1000; + File[] sonDirs = FileUtil.getDirsBeforeDateName(dir, DateUtil + .getStingDate(DateUtil.YYYYMMDD, new Date(timeMillis))); + delDataFileCallBack(curDateMillis, sonDirs, delHours); + + File[] files = FileUtil.getFilesBeforeMillis(dir,timeMillis); + if (files != null && files.length > 0) { + for (File f : files) { + FileUtil.delDir(f); + logger.debug("删除文件--" + f.getAbsolutePath()); + } + } + + if (files == null && files.length > 0) { + logger.info("删除文件夹" + dir.getAbsolutePath() + "下的文件:文件" + + files.length + "个"); + } + + if (dir.exists() && dir.listFiles().length <= 0) { + FileUtil.delDir(dir); + logger.info("删除文件夹" + dir.getAbsolutePath()); + } + } + } + + /** + * 清理临时目录的文件 + */ + public void delTempFile() { + try { + long curDate = System.currentTimeMillis(); + // 删除指定日期之前的临时文件 + File temp = new File(Contants.localTempPath); + if (!temp.exists() || !temp.isDirectory()) { + return; + } + for (File f : temp.listFiles()) { + long diff = DateUtil.getDaysFromBeginToEnd(f.lastModified(), + curDate); + if (f.exists() && diff > Contants.COMMON_DEL_TEMP_DAYS) { + //使用删除文件公共方法 + FileUtil.delDir(f); + logger.info("删除临时文件或文件夹" + f.getAbsolutePath()); + } + } + } catch (Exception e) { + logger.error(Utils.printExceptionStack(e)); + } + } + + /** + * 清理UPLOAD目录下的文件 + */ + public void delUpgradeFile() { + try { + long curDate = System.currentTimeMillis(); + // 删除指定日期之前的升级文件 + File uploads = new File(Contants.localUploadsPath); + if (!uploads.exists() || !uploads.isDirectory()) { + return; + } + for (File f : uploads.listFiles()) { + long diff = DateUtil.getDaysFromBeginToEnd(f.lastModified(), + curDate); + if (f.exists() && diff > Contants.COMMON_DEL_UPGRADEFILE_DAYS) { + //使用删除文件公共方法 + FileUtil.delDir(f); + logger.info("删除升级文件或文件夹" + f.getAbsolutePath()); + } + } + } catch (Exception e) { + logger.error(Utils.printExceptionStack(e)); + } + + } +} |
