import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.component.file.GenericFile;
import org.apache.camel.component.file.GenericFileConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CompareProcessor implements Processor {
static Logger LOG = LoggerFactory.getLogger(CompareProcessor.class);
static StringBuilder sb = new StringBuilder();
public CompareProcessor() {
};
public void process(Exchange exchange) {
InputStream inputStream = null;
Message msg = exchange.getIn();
String fileName = (String) msg.getHeader("CamelFileName");
InputStream is = null;
try {
is = GenericFileConverter.genericFileToInputStream(
(GenericFile) msg.getBody(), exchange);
} catch (Exception e1) {
e1.printStackTrace();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
boolean filenotExsit = false;
// reader specify directory file
try {
inputStream = new FileInputStream(new File("end/" + fileName));
System.out.println("SSSSSSSSB:"
+ new File("end/" + fileName).getAbsolutePath());
} catch (FileNotFoundException e1) {
LOG.error("can't find the file:" + fileName +"\t" + e1.getMessage());
filenotExsit = true;
//e1.printStackTrace();
}
BufferedReader reader1 = new BufferedReader(new InputStreamReader(
inputStream));
String line1 = null;
boolean flag = true; //if true, show that there has difference between two files;
try {
int i = 0;
while (true) {
line = reader.readLine();
line1 = reader1.readLine();
i++;
if(i==1){//ignore the first line, compare from second line.
System.out.println("ignore the first line+--" + i);
continue;
}
System.out.println("+++++++++++++++++line-" + line);
System.out.println("+++++++++++++++++line1-" + line1);
if(line != null && line1 != null){
if(!line.equals(line1)){
System.out.println("+++++++++++++++++--" + i);
flag = false;
sb.append(fileName + ";");
break;
}
} else if(line!=null && line1==null){
i++;
System.out.println("+++line!=null && line1==null++--" + i);
flag = false;
sb.append(fileName + ";");
break;
} else if(line==null && line1!=null) {
flag = false;
sb.append(fileName + ";");
break;
} else if(line==null && line1==null){
flag = true;
break;
}
}
inputStream.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (!flag) {
System.out.println("++++++++++++++++difference=" + msg);
} else {
System.out.println("@@@@@@@@@@@no difference=");
}
LOG.info("processing:", exchange);
System.out.println(sb.toString());
}
}
分享到:
相关推荐
赠送jar包:spring-boot-configuration-processor-2.5.6.jar; 赠送原API文档:spring-boot-configuration-processor-2.5.6-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.5.6-sources.jar; ...
赠送jar包:spring-boot-configuration-processor-2.6.3.jar; 赠送原API文档:spring-boot-configuration-processor-2.6.3-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.6.3-sources.jar; ...
POSTPROCESSOR后处理器是计算机辅助制造(CAM)系统中的一个重要组成部分,主要负责将数控程序(G代码或M代码)转化为适合特定机床或者控制系统理解和执行的形式。在CAM软件中,生成的原始G代码通常包含通用指令,但...
"Modern Processor Design-Fundamentals of Superscalar Processor"这本书深入探讨了这一主题,主要聚焦于超标量处理器的设计原理。超标量处理器是提高计算机性能的关键技术之一,通过并行执行多个指令来实现更高的...
"飞思卡尔Processor expert的用法" 飞思卡尔Processor expert是一款功能强大且灵活的微控制器开发工具,旨在帮助开发者快速搭建和配置飞思卡尔微控制器。下面是Processor expert的使用指南: 一、CPU 设置 在使用...
在计算机系统中,CPU(中央处理器)的Processor ID是一个唯一的标识符,用于区分不同处理器。在Windows环境下,可以通过编程方式获取这个ID,特别是在C++语言中。本项目提供了一个VS(Visual Studio)工程,专为在...
赠送jar包:spring-boot-configuration-processor-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-configuration-processor-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-...
赠送jar包:spring-boot-configuration-processor-2.0.4.RELEASE.jar; 赠送原API文档:spring-boot-configuration-processor-2.0.4.RELEASE-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.0.4....
《深入理解Win32_Processor类与处理器信息》 在Windows操作系统中,了解计算机硬件的详细信息对于系统管理和性能优化至关重要。Win32_Processor是Windows Management Instrumentation(WMI)提供的一种类,它用于...
通过分析Processor Designer的功能、易用性以及文档质量等方面,我们将全面评估该工具套件的价值。 #### 评估目标与策略 本次评估的主要目标是确定Processor Designer是否适合于课堂教学,并评估其在替代老旧...
在Java开发中,`AnnotationProcessor` 是一个强大的工具,它允许开发者在编译期间自动处理源代码,根据注解(Annotation)生成额外的类或修改已有类。这个过程被称为注解处理,是Java编译器的一部分,可以在不需人工...
### Processor Expert User Guide #### 关于产品 - 软件产品描述与益处 本发行包包含了一系列软件工具,用于支持面向Freescale HCS12 和 HCS12X 系列微控制器的应用开发。这些工具包括: - **Processor Expert ...
### Processor Expert 中文入门指南知识点解析 #### 一、Processor Expert 概览 - **简介**:Processor Expert 是一款强大的嵌入式系统开发工具,它主要用于简化基于微控制器的应用程序设计过程。通过图形化界面,...
标题中的"PROCESSOR_SDK_RADAR支持AWR2243修改代码"指的是一项针对处理器软件开发套件(PROCESSOR SDK)的雷达应用优化工作,特别是针对TI的AWR2243毫米波雷达传感器进行的代码修改。AWR2243是一款高性能的77GHz毫米波...
赠送jar包:spring-boot-configuration-processor-2.6.3.jar; 赠送原API文档:spring-boot-configuration-processor-2.6.3-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.6.3-sources.jar; ...
《Processor Design System-On-Chip Computing for ASICs and FPGAs》一书由Jari Nurmi编辑,主要介绍了处理器设计领域的前沿技术和发展趋势。本书详细探讨了处理器设计的各种方法和技术,包括SuperScaler、VLIW、...
《Intel(R) Processor ID Utility V3.6:深入了解Intel CPU ID检测工具》 Intel(R) Processor ID Utility V3.6是一款由英特尔公司推出的处理器识别工具,主要用于帮助用户检测和了解其计算机中Intel CPU的详细信息...
赠送jar包:spring-boot-configuration-processor-2.0.4.RELEASE.jar; 赠送原API文档:spring-boot-configuration-processor-2.0.4.RELEASE-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.0.4....
赠送jar包:mapstruct-processor-1.2.0.Final.jar; 赠送原API文档:mapstruct-processor-1.2.0.Final-javadoc.jar; 赠送源代码:mapstruct-processor-1.2.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct...