This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nms-nmsserver/src/com/nms/server/thread/file/ResultFileReaderThread.java

106 lines
3.1 KiB
Java
Raw Normal View History

2018-09-27 16:17:06 +08:00
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);
}*/
}