Пример vcdiff- java клиента - PullRequest
       26

Пример vcdiff- java клиента

0 голосов
/ 07 января 2020

Я пробую vcdiff для создания файла diff из исходного и целевого файлов. Кроме того, я буду применять diff для исходного файла, чтобы получить целевой файл.

Я достиг вышеуказанного варианта использования с помощью инструмента командной строки xdelta linux.

Но как этого добиться? используя vcdiff- java API? Любые советы или указания будут полезны для начала.

Спасибо.

1 Ответ

0 голосов
/ 09 января 2020

Я думаю, что базовый c вариант использования diff и apply может быть обработан следующим образом. Здесь diff генерируется из source.txt и target.txt . Затем diff применяется к 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());
...