`

Java File Diff-diffutils

 
阅读更多
1. Maven Dependency
<dependency>
			<groupId>com.googlecode.java-diff-utils</groupId>
			<artifactId>diffutils</artifactId>
			<version>1.2.1</version>
		</dependency>


2. Test Class
package com.citi.ocean.metadata.util;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.junit.Test;

import difflib.Delta;
import difflib.DiffRow;
import difflib.DiffRowGenerator;
import difflib.DiffUtils;
import difflib.Patch;
import difflib.DiffRow.Tag;

public class CompareTest {
	@Test
	public void testCompare() throws IOException {
		List<String> original = FileUtils.readLines(new File("src/test/properties/etl_org.sql"));
		List<String> revised = FileUtils.readLines(new File("src/test/properties/etl_change.sql"));

		Patch patch = DiffUtils.diff(original, revised);

		for (Delta delta : patch.getDeltas()) {
			List<?> list = delta.getRevised().getLines();
			for (Object object : list) {
				System.out.println(object);
			}
		}
		
		DiffRowGenerator.Builder builder = new DiffRowGenerator.Builder();
		builder.showInlineDiffs(false);
		DiffRowGenerator generator = builder.build();
		for (Delta delta :  patch.getDeltas()) {
			List<DiffRow> generateDiffRows = generator.generateDiffRows((List<String>) delta.getOriginal().getLines(), (List<String>) delta
					.getRevised().getLines());
			int leftPos = delta.getOriginal().getPosition();
			int rightPos = delta.getRevised().getPosition();
			for (DiffRow row : generateDiffRows) {
				Tag tag = row.getTag();
				if (tag == Tag.INSERT) {
					System.out.println("Insert: ");
					System.out.println("new-> " + row.getNewLine());
					System.out.println("");
				} else if (tag == Tag.CHANGE) {
					System.out.println("change: ");
					System.out.println("old-> " + row.getOldLine());
					System.out.println("new-> " + row.getNewLine());
					System.out.println("");
				} else if (tag == Tag.DELETE) {
					System.out.println("delete: ");
					System.out.println("old-> " + row.getOldLine());
					System.out.println("");
				} else if (tag == Tag.EQUAL) {
					System.out.println("equal: ");
					System.out.println("old-> " +  row.getOldLine());
					System.out.println("new-> " +  row.getNewLine());
					System.out.println("");
				} else {
					throw new IllegalStateException("Unknown pattern tag: " + tag);
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    java-diff-utils:Diff Utils库是一个开放源代码库,用于在文本或某种数据之间执行比较diff操作:计算diff,应用补丁,生成统一的diff或对其进行解析,生成diff输出以便将来显示(如侧面)侧视图)等

    java-diff-utils状态介绍Diff Utils库是一个开放源代码库,用于执行文本之间的比较操作:计算差异,应用补丁,生成统一的差异或对其进行解析,生成差异输出以方便将来显示(如并排视图)等等。 构建该库的主要原因是...

    java的文件比较 diffutils-1.2.1.jar

    DiffUtils-1.2.1.jar 是一个专门用于这个目的的Java库,它提供了高效且灵活的文本和对象的差异计算。这个库是开源的,允许开发者在Java应用程序中实现类似于Subversion (SVN) 或其他版本控制系统中的文件对比功能。 ...

    diff(Java实现)

    在Java中,`DiffUtils.diff()`方法可以接收两个列表对象作为参数,然后返回一个`DiffResult`对象,该对象包含了两个列表之间的差异信息。这个结果可以进一步解析,生成人类可读的输出,如上下文格式的差异,或者是...

    谷歌的文本差异对比实现类

    该java文件主要是对两个文本进行对比,并用html 标签标记出来。

    diff-match-patch(diff.zip)

    《diff-match-patch:Java中的文本差异与合并算法》 在Java编程中,处理文本的差异和合并是一项常见的任务,特别是在版本控制系统、协同编辑或文本比较应用中。diff-match-patch(简称dmp)库就是一个专门为此目的...

    bison-flex-diffutils-gettext

    《深入理解bison、flex、diffutils与gettext:构建高效文本处理与软件本地化》 在信息技术领域,开发高效、可扩展的软件是至关重要的。本文将深入探讨四个关键工具——bison、flex、diffutils和gettext,它们各自在...

    diff-match-patch

    例如,`DiffUtils` 类可能提供了进行差异比较的工具方法,`Patch` 类则可能用于创建和应用补丁,而`Diff` 类则可能封装了计算差异的具体逻辑。 在实际应用中,开发者可以通过导入这个库,调用相应的API来实现文本...

    Android-DiffUtils是Google官方在support-v7-24.2.0新出的一个工具类

    **Android DiffUtils详解** 在Android应用开发中,数据更新是一个常见的需求,比如在ListView或RecyclerView等列表控件中,我们经常需要对数据集进行增删改操作,然后更新UI。在support-v7-24.2.0版本中,Google...

    DiffUtils:Java库

    }然后,您应该调用diff方法: 获取对象的差异DiffUtils.difference(testEntityInstance1, testEntityInstance2)或合并对象并获得一连串的更改DiffUtils.merge(testEntityInstance1, testEntityInstance2, false)如果...

    Diffutils详解

    这个过程被称为“Diff计算”。 Diffutils的核心是`DiffUtil.calculateDiff()`方法,它接受两个List参数:一个是新的数据集,一个是旧的数据集。这个方法内部实现了一个高效的算法,基于“最小编辑距离”理论,找出...

    java diff 源码

    在实际应用中,Java的diff库,如Apache Commons Lang的`DiffUtils`,提供了更高级别的API,可以方便地比较字符串、对象列表或者整个文件。这些库通常已经优化了性能,并且考虑了各种边缘情况,使得在项目中集成diff...

    diffutils对比软件的安装使用

    diffutils-2.8.7-1.exe和patch-2.5.9-7-setup.exe。使用differ.bat来对比两个文件夹的差异,利用命令来打出两个文件不同的补丁,在需要时可以取出补丁和打入补丁 安装步骤: 1、下载软件:diffutils-2.8.7-1.exe和...

    diffutils-1.3.0.zip

    `diffutils-1.3.0.zip`中包含的`diffutils-1.3.0.jar`文件,就是这个库的Java实现,允许开发者在Java环境中使用这些功能。 在Java开发中,`diffUtil`通常指的是Android开发中的`DiffUtil`类。它是Android SDK的一...

    diffutils-2.7-bin.zip

    《diffutils-2.7-bin.zip:理解和应用diffutils工具》 diffutils是Unix/Linux操作系统中的一组实用程序,主要用于比较文件或文件集合之间的差异。这个压缩包"diffutils-2.7-bin.zip"包含了该工具集的一个版本,具体...

    diffutils-3.3

    diffutils-3.3;制作出两个文件的差异并得到差异文件,即patch补丁。

    GnuWin32-diff安装和使用教程.rar

    Windows系统下diff命令的安装和使用教程, “'diff' 不是内部或外部命令,也不是可运行的程序”以及Vivado HLS中system&#40;"diff --brief -w result.dat result.golden.dat"&#41; 问题的解决方案是:在Windows系统下...

    diffutils-1.3.0.jar

    diffutils-1.3.0.jar 比对文本jar包

    java diff util 1.2.1

    `diffutils-1.2.1.jar`是这个库的JAR文件,包含所有相关的类和方法,可以直接导入到你的项目中使用。这个库的版本号1.2.1表示这是一个稳定版本,可能已经修复了一些已知的问题并提供了更多的功能。 `pmd-4.2.5.jar`...

    diffutils-3.3-6.el7-9.x64-86.rpm.tar.gz

    1、文件内容:diffutils-3.3-6.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/diffutils-3.3-6.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo ...

    diffutils

    ~/diffutils$ cargo run -- -u3 Cargo.lock Cargo.toml Finished dev [unoptimized + debuginfo] target(s) in 0.00s Running `target/debug/diff -u3 Cargo.lock Cargo.toml`--- Cargo.lock+++ Cargo.toml@@ -1,39...

Global site tag (gtag.js) - Google Analytics