initial commit
This commit is contained in:
105
src/com/nms/server/thread/file/ResultFileReaderThread.java
Normal file
105
src/com/nms/server/thread/file/ResultFileReaderThread.java
Normal file
@@ -0,0 +1,105 @@
|
||||
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);
|
||||
}*/
|
||||
}
|
||||
Reference in New Issue
Block a user