`

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);
				}
			}
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics