对于当前java 文件比较 diffutils-1.2.1.jar 的使用和修改

java的文件比较 diffutils-1.2.1.jar 这是java的diffutils工具,很不错。根据它可以做出和svn或其他的文件比较一样的效果。 立即下载

我们项目需要做文件比较处理,从网上下载了diffutils-1.2.1.jar,总的来说该文件比较还算正确,但有不足的地方,新的文件和原来的文件若有不同,不能反应是inset和delete,返回的类型全部都是change,我对它进进了封装,并测试了大量的文件,都还不错,具体的修改后的代码如下:

public class CompareListUtils {
	public static final String Result_EQUAL = "EQUAL";
	public static final String Result_INSERT = "INSERT";
	public static final String Result_DELETE = "DELETE";
	public static final String Result_CHANGE = "CHANGE";
	/***
	 * 
	 * @param filename
	 * @return
	 */
	private static List<String> fileToLines(String filename) {
		List<String> lines = new LinkedList<String>();
		String line = "";
		try {
			BufferedReader in = new BufferedReader(new FileReader(filename));
			while ((line = in.readLine()) != null) {
				lines.add(line);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return lines;
	}
	
	/***
	 * 对文件进行比较
	 * INSERT, DELETE, CHANGE, EQUAL
	 * @param fromFileName 原来的文件名
	 * @param toFileName 新的文件名
	 */
	public static List<CompareMo> compareAll(String fromFileName, String toFileName) {
		List<String> original = fileToLines(fromFileName);
		List<String> revised = fileToLines(toFileName);
		final DiffRowGenerator.Builder builder = new DiffRowGenerator.Builder();
		final DiffRowGenerator dfg = builder.build();
		final List<DiffRow> rows = dfg.generateDiffRows(original, revised);
		List<CompareMo> listCompareMo = new ArrayList<CompareMo>();
		int i=1;
		int oldSize = original.size();
		int newSize = revised.size();
		int insertSize = 0;
		int deleteSize = 0;
		for (final DiffRow diffRow : rows) {
			String tag = diffRow.getTag().toString();
			String oldLine = diffRow.getOldLine();
			String newLine = diffRow.getNewLine();
			if(Result_CHANGE.equals(tag)){
				boolean isInset = false;
				if ((i-insertSize) <= oldSize) {
					if(oldLine!=null&& oldLine.trim().length()==0){
						if(!original.get(i-1-insertSize).equals(oldLine)){
							tag = Result_INSERT;
							isInset = true;
							insertSize ++;
						}
					}
				}
				if (!isInset) {
					if ((i-deleteSize) <= newSize) {
						if(newLine!=null&& newLine.trim().length()==0){
							if(!revised.get(i-1-deleteSize).equals(oldLine)){
								tag = Result_DELETE;
								isInset = true;
								deleteSize ++;
							}
						}
					}
				}
			}
			listCompareMo.add(new CompareMo(
					i, oldLine, 
					newLine, 
					tag
			));
			i++;
		}
		return listCompareMo;
	}
	
	public static void main(String[] args) {
		List<CompareMo> compares = CompareListUtils.compareAll(
				"D:/work/WiFiPages/originalFile.txt",
				"D:/work/WiFiPages/newFile.txt");
		for (CompareMo compare : compares) {
			System.out.println(compare.getId() + " 结果 :" + compare.getType()
					+ ":" + compare.getOldText() + "<>" + compare.getNewText());
		}
	}
}

java-diff-utils:Diff Utils库是一个开放源代码库,用于在文本或某种数据之间执行比较diff操作:计算diff,应用补丁,生成统一的diff或对其进行解析,生成diff输出以便将来显示(如侧面)侧视图)等 java-diff-utils 状态 介绍 Diff Utils库是一个开放源代码库,用于执行文本之间的比较操作:计算差异,应用补丁,生成统一的差异或对其进行解析,生成差异输出以方便将来显示(如并排视图)等等。 构建该库的主要原因是缺乏使用差异文件时需要的所有常用内容的易于使用的库。 最初它受JRCS库的启发,并且是diff模块的不错的设计。 这最初是Google Code Archive的java-diff-utils的分支。 API 实际发行版本的Javadocs: 例子 查找更多有用的信息和示例。 这两个输出是使用此java-diff-utils生成的。 也可以在“示例”页面上 立即下载

相关推荐

Diffutils详解

详解了recyclerview局部刷新那点事

Java 文本内容差异对比实现介绍

目录一、文本差异对比介绍二、依赖下载三、获取两文件的不同点-patch四、根据patch生成统一的差异格式unifiedDiff五、根据unifiedDiff打补丁六、对比两文件的不同点并按行显示不同 一、文本差异对比介绍 举一个最常见的例子,我们使用git进行提交时,通常会使用git diff --cached来查看这次提交做了哪些改动,这里我们先简单定义一下什么是diff:diff就是目标文本和源文本之间的区别,也就是将源文本变成目标文本所需要的操作。Myers算法由Eugene W.Myers在19

西凉的悲伤博客 2万+

diffutils-1.3.0.zip

diff Util

java实现文件对比

基于java实现类似于svn的文件对比功能及效果,该对比适用于html,js,css,text等

csdn565973850的博客 5456

mstar PQ软件修改方法

1.修改ADC的值 Static code APIXC_AdcGainOffsetSetting tADCSetting[ADC_SET_NUMS]= #define INIT_ADC_RGB_RED_GAIN               0x1000 #define INIT_ADC_RGB_GREEN_GAIN           0x1000 #define INIT_ADC_RGB

qq_18810259的专栏 2565

手把手教你搭建《黑色沙漠》单机版:从下载到联机的完整指南(含GM工具使用)

本文提供《黑色沙漠》单机版从下载安装到GM工具使用及局域网联机的完整教程。详细解析不同版本选择、系统配置要求、常见问题解决,并分享GM工具高级命令和局域网联机设置技巧,帮助玩家轻松搭建个性化游戏环境。

weixin_28738165的博客 468

java 比对文本

package com.elink.common.wordCompare; import java.util.Arrays; import java.util.List; import java.util.Vector; import org.apache.commons.lang3.StringUtils; import com.elink.common.utils.WordCompare...

songqiang2011的博客 4989

AURIX™ TC49x芯片手册中文分享(二)

主要内容为第一章、功能模块的特征

xibaofenqi的博客 1563

java-diff-utils完全指南:从入门到精通的文本差异比较神器

java-diff-utils是一款功能强大的开源文本差异比较神器,它能够帮助开发者轻松实现文本间的差异计算、补丁应用、统一差异格式生成与解析等功能。无论是代码版本控制、文档比对还是数据同步,这款工具都能提供高效可靠的支持。 ## 一、java-diff-utils核心功能解析 🚀 ### 1.1 文本差异计算引擎 java-diff-utils的核心在于其高效的差异计算算法。项目提供了多

gitblog_00796的博客 731

Arduino四足开源机器猫-Opencat(导航贴)

本内容由我和小伙伴共同编写,未经授权,谢绝转载! 1.项目介绍 2.组装调试教程 (一)Opencat-F (1)资料地址(包含程序代码&&3D打印图纸): 链接:https://pan.baidu.com/s/1AcVA5jSiOSzRKqEQAomrTA 提取码:szfx (2) (二)Opencat-B (1)组装调试 (2)组装调试注意事项 (3)添加新技能 3.编程 ...

qqliuzhitong的博客 4172

数仓 - 促销敏感度、评论敏感度

1. 促销敏感度 步骤1. 首先按照最后一次下单时间及有无复购情况将用户分为四大群体: 近一年有购物行为且复购的用户 -- L1 (今年复购用户) 近一年有购物行为但无复购的用户 --L2 (今年一单购用户) 最后一次下单时间在1年之前且有复购的用户 --L3 (今年无购且只有一单用户) 最后一次下单时间在1年之前但无复购的用户 -- L4 (今年无购多单用户) 步骤2. 每一类用户群再根据优惠订单占比、每单优惠金额占比的平均值、优惠金额这三个指标进行k-means聚类,分为: 非常敏感 -

weixin_41332009的博客 1899

文本对比,文本差异并排对比显示实现

目录一、准备二、后端实现三、前端实现 一、准备 1.Java使用的库 java-diff-utils 2.前端使用的库 diff2html 二、后端实现 用java-diff-utils 封装了一个工具类 DiffHandleUtils.java import com.github.difflib.UnifiedDiffUtils; import com.github.difflib.patch.Patch; import java.io.File; import java.io.IOException;

西凉的悲伤博客 2万+

Fast DDS源代码走读

DDS, PDP, EPD, DataWriter, DataReader

weixin_43082062的博客 713

SpringBoot医院信息管理系统开发实践与优化

医院信息管理系统(HIS)是医疗数字化转型的核心平台,需要处理高并发、数据强一致性等特殊需求。SpringBoot框架凭借自动配置和嵌入式容器优势,成为医疗系统开发的首选技术栈。通过线程池动态调整、分布式缓存、微服务架构等技术手段,可有效应对挂号高峰、电子病历存储等医疗场景。本文结合三甲医院实战案例,详解如何利用MyBatis-Plus、Redis、MinIO等技术实现药品库存预警、智能分诊等医疗特色功能,并分享医疗数据安全合规、系统性能优化的工程实践。

weixin_34389926的博客 290

Xilinx系ZYNQ学习笔记(一)Vivado使用说明

vivado使用学习

贾saisai的博客 1874

25、格式化字符串攻击全解析

本文深入解析了格式化字符串攻击的原理与利用方式,涵盖缓冲区溢出与格式化字符串漏洞的区别,详细介绍了printf函数的工作机制、常见格式化说明符及其安全隐患。文章分析了三类典型编程错误导致的漏洞,并展示了如何通过恶意格式化字符串实现拒绝服务、内存读取和写入攻击。同时,提供了有效的防御措施,包括输入验证、使用安全函数、避免直接使用用户输入作为格式化字符串以及启用编译器安全选项,帮助开发者防范此类高危漏洞。

beer8的博客 83

【亲测免费】 Java-Diff-Utils:强大的文本比较库

Java-Diff-Utils是一个成熟的开源库,专为处理文本或数据间的差异比较而设计,广泛应用于需要差异计算和补丁操作的场景中。该项目采用Java编程语言开发,确保了它在多种Java应用环境中的兼容性和便利性。 ## 核心功能 - **计算差异**:能够高效地对比两个文本之间的差异。 - **应用补丁**:支持将生成的补丁文件应用到原始文本上以还原修改。 - **统一diff生成与解析**:生...

gitblog_09468的博客 985

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java-Diff-Utils 项目使用教程

Java-Diff-Utils 是一个用于文本差异比较的开源库。以下是其主要目录结构及其功能介绍: ``` java-diff-utils/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ ├── com/ │ │ │ │ ├── github/ │ │ │ │ │ ├── java/ │ │ ...

gitblog_00645的博客 1563

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【亲测免费】 开源项目Java Diff Utils安装配置完全指南

**Java Diff Utils** 是一个强大的开源库,专为文本或其他数据类型的比较而设计。它支持计算差异、应用补丁、生成统一差异格式(unified diff)、解析差异文件以及生成易于显示的差异输出(例如并排视图)。此项目基于简洁易用的理念开发,弥补了在处理diff需求时简单实用库的空白。**主要编程语言**是Java。 ## 关键技术和框架 - **算法实现**:采用了经典的Myers...

gitblog_09470的博客 933

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java File Diff-diffutils

1. Maven Dependency [code="java"] com.googlecode.java-diff-utils diffutils 1.2.1 [/code] 2. Test Class [code="java"]package com.citi.ocean.metadata.util; import java.io.File; i...

caerun 1793

java-diff-utils 用法

java diff 对比文本不同

weixin_42074827的博客 1983

Java-diff-utils对比xml文件差异

工作中遇到了一个需求,需要对比两个xml文件,并记录差异位置及差异内容,以实现类似于git diff的效果。经过调研,发现了现成的轮子:java-diff-utils,它是基于Myers Diff 差分算法来实现的,这里就不记录算法的细节了,仅记录用例,方便以后抄作业。

qq_38736877的博客 1374

java diff 目录比较_Java 如何Diff文件

两个文件如何比较差异?可能会想到有文件比对工具,比如Beyond Compare等用Java如何做呢?,今天介绍一下java-diff-utilsgithub 上有一些案例,此处不再赘述.此处只写一种比对两个文件的差异第一步 pom文件中,引入jar依赖io.github.java-diff-utilsjava-diff-utils4.5第二步 准备两个差异文件(最好由一个文件复制后对文件进行修改...

weixin_42612804的博客 884

【亲测免费】 探秘 Java Diff Utils:高效代码差异比较工具

是一个开源项目,它提供了强大的文本和文件差异比较功能,专为Java开发者设计。这个库可以帮助开发者轻松地对比两个文本文件或字符序列的差异,并提供合并冲突的解决方案。在本文中,我们将深入探讨这个项目的特性、应用场景和技术实现,以鼓励更多的开发者加入到这个实用工具的使用中。 ## 项目简介 Java Diff Utils 包含了一系列算法,如Hunks、Diffs和Patches,这些都是基于GN...

gitblog_00003的博客 3094

Java-Diff-Utils性能优化:处理大文本差异时的算法选择与实践

在软件开发过程中,文本差异比较是一个常见的需求,特别是在版本控制、代码审查和文档比对等场景中。Java-Diff-Utils作为Java生态中广泛使用的差异比较库,提供了强大的文本差异比较功能。然而,在实际使用中,开发者可能会遇到性能问题,特别是在处理大文本文件时。 ## 问题背景 最近有开发者反馈,在使用Java-Diff-Utils处理两个特定文本文件时,程序会在generateDiffR...

gitblog_07197的博客 978

【亲测免费】 推荐文章:深入浅出java-diff-utils——你的代码差异比较神器

在软件开发的世界里,对比文本差异几乎是每个开发者日常工作中不可或缺的一部分。今天,让我们一起探索一个强大的工具——`java-diff-utils`,这是一款专为Java平台设计的开源库,旨在简化文本差异的处理,提升工作效率。 ## 项目介绍 `java-diff-utils` 是一款高度灵活且功能丰富的Java库,用于执行文本间的比较操作,无论是计算差异、应用补丁、生成统一格式的diff文件...

gitblog_00155的博客 1756
上一篇: windowxp 安装 redmine1.41
下一篇: java 压缩文件的处理
超斌
博客等级 码龄20年 5粉丝 7原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值