106 lines
3.1 KiB
Java
106 lines
3.1 KiB
Java
package com.nms.server.thread.file;
|
||
|
||
import java.io.BufferedReader;
|
||
import java.io.File;
|
||
import java.io.FileInputStream;
|
||
import java.nio.charset.Charset;
|
||
import java.util.Calendar;
|
||
|
||
import org.apache.commons.lang.StringUtils;
|
||
import org.apache.log4j.Logger;
|
||
|
||
import com.nms.server.bean.MissionResult2;
|
||
import com.nms.server.common.Common;
|
||
import com.nms.server.common.Constants;
|
||
import com.nms.server.util.FileUtils;
|
||
import com.nms.server.util.UnicodeReader;
|
||
|
||
/**
|
||
* XML解析线程
|
||
*
|
||
* @author ZGGG3
|
||
*
|
||
*/
|
||
public class ResultFileReaderThread implements Runnable {
|
||
Logger logger = Logger.getLogger(ResultFileReaderThread.class);
|
||
private String dir;
|
||
private String name; // 自定义Thread Name
|
||
|
||
public ResultFileReaderThread(String name, String url) {
|
||
this.dir = url;
|
||
this.name = name;
|
||
}
|
||
|
||
public void run() {
|
||
// 为当前线程命名 ,用与开发阶段友好输出。
|
||
Thread.currentThread().setName(name+" "+dir);
|
||
|
||
try {
|
||
|
||
logger.info("文件夹路径 :>" + dir);
|
||
File driFile = new File(dir);
|
||
|
||
//获取目录下的.result文件集合
|
||
File[] files = FileUtils.sortByFileNameASC(FileUtils.listFilesEndWith(driFile, ".result")); // 按文件名称 升序排序
|
||
|
||
// 解析文件数为0时,终止该计划任务
|
||
if(files==null || files.length==0){
|
||
Common.cancelRunnableAtOnce(dir);
|
||
return;
|
||
}
|
||
|
||
logger.debug("文件夹路径 :>" + driFile.getAbsolutePath() + " 下 " + files.length + "个文件,解析开始");
|
||
long l = Calendar.getInstance().getTimeInMillis();
|
||
|
||
if (files != null && files.length > 0) {
|
||
|
||
for (File file : files) {
|
||
|
||
if(file.length()>0){
|
||
try {
|
||
BufferedReader reader = new BufferedReader(new UnicodeReader(new FileInputStream(file), Charset.defaultCharset().name()));
|
||
String data = StringUtils.trim(reader.readLine());
|
||
String [] result = StringUtils.isEmpty(data)?null:data.split(Constants.COMMON_DATA_SPLIT);
|
||
|
||
if(result != null){
|
||
MissionResult2 result2 = Common.resoveMissionResult(result);
|
||
Common.addResultToResultList(result2);
|
||
}
|
||
reader.close();
|
||
} catch (Exception e) {
|
||
logger.error("",e);
|
||
}
|
||
}
|
||
file.delete();
|
||
}
|
||
}
|
||
logger.debug(driFile.getAbsolutePath()+" 解析完成耗时:>"+(Calendar.getInstance().getTimeInMillis()-l));
|
||
//清理
|
||
files = FileUtils.sortByFileNameASC(FileUtils.listFilesEndWith(driFile, ".tp")); // 按文件名称 升序排序
|
||
if(files!=null && files.length>0){
|
||
for(File file : files){
|
||
file.delete();
|
||
}
|
||
}
|
||
logger.debug("清理临时文件完成");
|
||
} catch (Exception e) {
|
||
logger.error("",e);
|
||
}
|
||
}
|
||
|
||
/* public static void main(String[] args) {
|
||
long l = Calendar.getInstance().getTimeInMillis();
|
||
Future<?> future = Common.service.submit(new FileReaderThread("文件解析线程", "D:\\cvs\\10.0.6.10"));
|
||
try {
|
||
future.get();
|
||
} catch (InterruptedException e) {
|
||
// TODO Auto-generated catch block
|
||
e.printStackTrace();
|
||
} catch (ExecutionException e) {
|
||
// TODO Auto-generated catch block
|
||
e.printStackTrace();
|
||
}
|
||
System.out.println(Calendar.getInstance().getTimeInMillis()-l);
|
||
}*/
|
||
}
|