Пример клиента vcdiff-java
Я пробую vcdiff для создания файла сравнения из исходного и целевого файлов. Кроме того, будет применяться разница в исходном файле, чтобы получить целевой файл.
Я достиг вышеупомянутого варианта использования с инструментом командной строки xdelta linux.
Но как добиться того же с помощью API vcdiff-java? Любые подсказки или указания будут полезны для начала.
Спасибо.
1 ответ
Я думаю, что базовый вариант использования diff и apply можно обработать следующим образом. Здесь разница генерируется из source.txt и target.txt. Тогда дифференциал применяется на source.txt, чтобы получить Result.txt, равный target.txt.
Path source = Files.createFile(Paths.get(basePath + "source.txt"));
Files.write(source, new StringBuilder(
"First line of the file.\n"
+ "Second line of the file."
).toString().getBytes());
Path target = Files.createFile(Paths.get(basePath + "target.txt"));
Files.write(target, "1. First line of the file!".getBytes());
final ByteArrayOutputStream delta_ = new ByteArrayOutputStream();
VCDiffEncoder<OutputStream> encoder = VCDiffEncoderBuilder.builder()
.withDictionary(Files.readAllBytes(source))
.withTargetMatches(false)
.withChecksum(true)
.withInterleaving(true)
.buildSimple();
encoder.encode(Files.readAllBytes(target), delta_);
ByteArrayOutputStream result_out = new ByteArrayOutputStream();
VCDiffDecoder decoder = VCDiffDecoderBuilder.builder().buildSimple();
decoder.decode(Files.readAllBytes(source), delta_.toByteArray(), result_out);
Path result = Files.createFile(Paths.get(basePath + "result.txt"));
Files.write(result, result_out.toByteArray());