作为 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 编写代码片段:
以下代码示例显示了您可以如何轻松地比较和合并 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 获取更改列表
为了获得比较后的所有变化列表,我们将按照以下步骤编写代码:
- 用源文件的路径初始化 Comparer 对象。
- 调用add() 方法并指定目标文件的路径。
- 调用 compare() 方法。
- 使用 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 代码比较库中的高级选项
如果您需要接受或拒绝多个版本的代码,您可能必须应用或放弃更改。在这种情况下,请按照以下步骤操作:
- 使用源文档的路径或流初始化 Comparer 类的对象。 2.调用add()方法,设置目标文档的路径。
- 调用 compare() 方法。
- 调用getChanges() 方法并获取检测到的变化列表。
- 将所需更改对象的 ComparisonAction 设置为 ComparisonAction.ACCEPT 或 ComparisonAction.REJECT 值。
- 调用 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() 方法。