Katalon写一个Groovy脚本,java8利用java-diff-util实现两个文件夹对比,并将比较结果以各文件名出力为HTML文件。要求:当文件在两个文件夹中都存在时,能识别隔行数据,将两个文件有差异的数据都出力到HTML中,解析两个文件的差异数据并将有差异的字段高亮显示出来;当文件只在一个文件夹中存在的文件,将结果出力到HTML中
时间: 2024-03-02 11:48:30 浏览: 74
folder-diff:比较两个文件夹的工具
好的,以下是一个示例的Groovy脚本,它可以实现你的要求:
```groovy
@Grab('com.googlecode.java-diff-utils:diffutils:1.4')
import difflib.*
import java.nio.file.*
def dir1 = Paths.get("folder1")
def dir2 = Paths.get("folder2")
def output = new StringBuilder()
output << "<html><body>"
// 对比两个文件夹中的所有文件
Files.walk(dir1).forEach { file1 ->
def file2 = dir2.resolve(dir1.relativize(file1))
if (Files.exists(file2)) {
// 如果文件在两个文件夹中都存在,进行比较
def lines1 = Files.readAllLines(file1)
def lines2 = Files.readAllLines(file2)
def patch = DiffUtils.diff(lines1, lines2)
if (patch.getDeltas().size() > 0) {
output << "<h2>${file1.getFileName()}</h2>"
output << "<table>"
patch.getDeltas().each { delta ->
output << "<tr>"
def lines = delta.getRevised().getLines()
for (int i = 0; i < lines.size(); i++) {
def line = lines.get(i)
if (delta.getType() == Delta.TYPE.CHANGE) {
// 如果是修改,则高亮显示差异的部分
if (delta.getOriginal().getLines().contains(line)) {
output << "<td style='background-color:yellow'>${line}</td>"
} else {
output << "<td style='background-color:red'>${line}</td>"
}
} else {
output << "<td>${line}</td>"
}
}
output << "</tr>"
}
output << "</table>"
}
} else {
// 如果文件只在一个文件夹中存在,输出文件名
output << "<h2>${file1.getFileName()} only exists in ${dir1}</h2>"
}
}
output << "</body></html>"
// 将比较结果输出到HTML文件中
Files.write(Paths.get("diff.html"), output.toString().getBytes())
```
这个脚本会对比两个文件夹中的所有文件,并将比较结果以HTML格式输出到一个文件中。如果文件在两个文件夹中都存在,它会解析两个文件的差异数据并将有差异的字段高亮显示出来;如果文件只在一个文件夹中存在,它会将结果输出到HTML中。它使用了Java的diffutils库来实现文件比较。
阅读全文