1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
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));
}
}
}
|