`

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`对象,该对象包含了两个列表之间的差异信息。这个结果可以进一步解析,生成人类可读的输出,如上下文格式的差异,或者是...

    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)如果...

    java diff 源码

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

    Diffutils详解

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

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

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

    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

    ~/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...

    Gnu Diffutils for Windows

    You can use the diff command to show differences between two files, or each corresponding file in two directories. diff outputs differences between files line by line in any of several formats, ...

Global site tag (gtag.js) - Google Analytics