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
2018-09-27 16:17:06 +08:00

106 lines
3.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}*/
}