在 Java 中比较和合并源代码文件

在 Java 中比较和合并源代码文件

作为 Java 开发人员,如果您要构建一个源代码代码比较工具或应用程序,或者您可能需要管理多个版本的代码文件,那么您可能会考虑如何在 Java 中比较和合并源代码文件。如果是这样,本文将说明无需编写多行代码即可轻松完成此操作。此外,我们将看到如何在合并源代码文件时检索、接受或放弃更改。

本文将涵盖以下要点:

用于比较和合并源代码文件的 Java 库

为了比较和合并源代码文件,我们将使用 Java 代码比较 ,它包含所有重要和突出的源代码比较功能。这个 Java 代码比较库可以 下载 也可以使用 Maven 配置直接安装,如下所示。

<repository>
    <id>groupdocs-artifacts-repository</id>
    <name>GroupDocs Artifacts Repository</name>
    <url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-comparison</artifactId>
    <version>22.11</version>
</dependency>

如何在 Java 中比较和合并源代码文件

假设我们有两个源代码不同版本的文件(source.cs 和 target.cs),如以下屏幕截图所示。

要比较的源代码文件

通过考虑上述文件,让我们按照以下步骤用 Java 编写代码片段:

  1. 使用源文档的路径或流初始化 Comparer 类。
  2. 调用add() 方法并指定目标文档的路径或流。
  3. 调用 compare() 方法。

以下代码示例显示了您可以如何轻松地比较和合并 Java 中的源代码文件。

//Instantiate Comparer object with source document path or stream;
try (Comparer comparer = new Comparer(SourceFile)) {
// Invoke add method and specify target document path or stream.
comparer.add(TargetFile);
//Invoke compare method.
final Path resultPath = comparer.compare(ResultPath);
}

结果,我们将获得合并后的源代码文件和突出显示代码更改的 HTML 文件。请注意,删除的元素将标记为红色 ,添加的元素将标记为蓝色 ,修改的元素将标记为绿色

比较和合并源代码文件

使用 Java 获取更改列表

为了获得比较后的所有变化列表,我们将按照以下步骤编写代码:

  1. 用源文件的路径初始化 Comparer 对象。
  2. 调用add() 方法并指定目标文件的路径。
  3. 调用 compare() 方法。
  4. 使用 getChanges() 方法获取更改列表。

下面的代码示例演示了如何获取所有更改的列表。

//Initialize Comparer object with source file path
try (Comparer comparer = new Comparer(sourceFile)) {
//Invoke [add][] method and specify target file path.
comparer.add(targetFile);
//Call compare method
final Path resultPath = comparer.compare();
//Get the list of changes by using getChanges method
ChangeInfo[] changes = comparer.getChanges();
//Display the changes count
System.out.println("Count of changes: " + changes.length);
}

Java 代码比较库中的高级选项

如果您需要接受或拒绝多个版本的代码,您可能必须应用或放弃更改。在这种情况下,请按照以下步骤操作:

  1. 使用源文档的路径或流初始化 Comparer 类的对象。 2.调用add()方法,设置目标文档的路径。
  2. 调用 compare() 方法。
  3. 调用getChanges() 方法并获取检测到的变化列表。
  4. 将所需更改对象的 ComparisonAction 设置为 ComparisonAction.ACCEPTComparisonAction.REJECT 值。
  5. 调用 applyChanges() 方法并将更改集合传递给它。

以下代码片段显示了如何使用代码比较库的高级选项。

//Initialize Comparer object with source file path
try (Comparer comparer = new Comparer(sourcePath)) {
//Invoke [add][] method and specify target file path.
comparer.add(targetPath);
//Call compare method
final Path resultPath = comparer.compare(outputPath);
//Get the list of changes by using getChanges method
ChangeInfo[] changes = comparer.getChanges();
//Set ComparisonAction of needed change object to ComparisonAction.ACCEPT value.
for (int i = 0; i < 10; i++) {
changes[i].setComparisonAction(ComparisonAction.ACCEPT);
}
//Set ComparisonAction of needed change object to ComparisonAction.REJECT value.
for (int i = 10; i < changes.length; i++) {
changes[i].setComparisonAction(ComparisonAction.REJECT);
}
// Call applyChanges method and pass collection of changes to it.
comparer.applyChanges(resultPath, new ApplyChangeOptions(changes));
}

获得免费许可证

您可以获得 免费临时许可证 来试用 API,而不受评估限制。

结论

总而言之,我们希望您已经学会了如何使用 Java 代码比较库比较和合并 Java 中的源代码文件。结果,您获得了插入或删除内容的摘要。此外,您还了解了获取更改列表并接受或拒绝已识别更改的方法。

您可以访问 文档 来探索其他功能。

问一个问题

您可以在我们的论坛 上让我们知道您的问题或疑问。

常见问题

如何在 Java 中比较和合并源代码文件?

使用源文档路径或流初始化 Comparer 类,调用 add() 方法,并设置目标文档的路径或流。之后,调用 Comparer 类的 compare() 方法。

也可以看看