maven依赖
<dependency>
<groupId>io.github.java-diff-utils</groupId>
<artifactId>java-diff-utils</artifactId>
<version>4.9</version>
</dependency>
示例
@SpringBootTest
public class DemoTests {
@Test
void 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) 生成统一的差异格式