package com.baidu.disconf.web.common.comparator; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import difflib.Delta; import difflib.DiffUtils; import difflib.Patch; /** * @author knightliao */ public class FileComparator extends CommonComparator { private final File original; private final File revised; public FileComparator(File original, File revised) { this.original = original; this.revised = revised; } protected List<Delta> getDeltas() throws IOException { final List<String> originalFileLines = fileToLines(original); final List<String> revisedFileLines = fileToLines(revised); final Patch patch = DiffUtils.diff(originalFileLines, revisedFileLines); return patch.getDeltas(); } private List<String> fileToLines(File file) throws IOException { final List<String> lines = new ArrayList<String>(); String line; final BufferedReader in = new BufferedReader(new FileReader(file)); while ((line = in.readLine()) != null) { lines.add(line); } return lines; } }