maven依赖
<dependency><groupId>io.github.java-diff-utils</groupId><artifactId>java-diff-utils</artifactId><version>4.9</version></dependency>
示例
@SpringBootTest
public class DemoTests {@Testvoid test2() throws IOException {List<String> original = Files.readAllLines(new File("F:\\demo\\diff\\demo1.txt").toPath());List<String> revised = Files.readAllLines(new File("F:\\demo\\diff\\demo2.txt").toPath());Patch<String> patch = DiffUtils.diff(original, revised);List<String> unifiedDiff = UnifiedDiffUtils.generateUnifiedDiff("test1.txt", "test2.txt", original, patch, 0);unifiedDiff.forEach(System.out::println);}
}
DiffUtils 相关API
# 用于获取两个文件的不同点
diff(List<T> original, List<T> revised, DiffAlgorithmListener progress)
diff(List<T> original, List<T> revised)
diff(List<T> original, List<T> revised, boolean includeEqualParts)
diff(String sourceText, String targetText, DiffAlgorithmListener progress)
diff(List<T> source, List<T> target, BiPredicate<T, T> equalizer)
diff(List<T> original, List<T> revised, DiffAlgorithmI<T> algorithm, DiffAlgorithmListener progress)
diff(List<T> original, List<T> revised, DiffAlgorithmI<T> algorithm, DiffAlgorithmListener progress, boolean includeEqualParts)
diff(List<T> original, List<T> revised, DiffAlgorithmI<T> algorithm)
diffInline(String original, String revised)
diff(List<T> original, List<T> revised, DiffAlgorithmI<T> algorithm)
diffInline(String original, String revised)
# 源文件数据 转 修订后的文件数据
patch(List<T> original, Patch<T> patch)
# 修订后的文件数据 转 源文件数据
unpatch(List<T> revised, Patch<T> patch)
UnifiedDiffUtils 相关API
parseUnifiedDiff(List<String> diff)
generateUnifiedDiff(String originalFileName, String revisedFileName, List<String> originalLines, Patch<String> patch, int contextSize) 生成统一的差异格式