• Google Archive Patch 基础应用代码记录


    项目地址

    Google Archive Patch

    前置

    
    <dependency>
        <groupId>com.google.archivepatchergroupId>
        <artifactId>archive-patch-applierartifactId>
        <version>1.0.4version>
        <scope>testscope>
    dependency>
    
     <dependency>
        <groupId>com.google.archivepatchergroupId>
        <artifactId>archive-patch-generatorartifactId>
        <version>1.0.4version>
    dependency>
    
    <dependency>
        <groupId>com.google.archivepatchergroupId>
        <artifactId>archive-patch-sharedartifactId>
        <version>1.0.4version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    生成补丁

    import com.google.archivepatcher.generator.FileByFileV1DeltaGenerator;
    import com.google.archivepatcher.shared.DefaultDeflateCompatibilityWindow;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.zip.Deflater;
    import java.util.zip.DeflaterOutputStream;
    
    /** Generate a patch; args are old file path, new file path, and patch file path. */
    public class SamplePatchGenerator {
      public static void main(String... args) throws Exception {
        if (!new DefaultDeflateCompatibilityWindow().isCompatible()) {
          System.err.println("zlib not compatible on this system");
          System.exit(-1);
        }
        File oldFile = new File(args[0]); // must be a zip archive
        File newFile = new File(args[1]); // must be a zip archive
        Deflater compressor = new Deflater(9, true); // to compress the patch
        try (FileOutputStream patchOut = new FileOutputStream(args[2]); // args[2]为补丁存放地址
            DeflaterOutputStream compressedPatchOut =
                new DeflaterOutputStream(patchOut, compressor, 32768)) {
          new FileByFileV1DeltaGenerator().generateDelta(oldFile, newFile, compressedPatchOut);
          compressedPatchOut.finish();
          compressedPatchOut.flush();
        } finally {
          compressor.end();
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    应用补丁

    import com.google.archivepatcher.applier.FileByFileV1DeltaApplier;
    import com.google.archivepatcher.shared.DefaultDeflateCompatibilityWindow;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.Inflater;
    import java.util.zip.InflaterInputStream;
    
    /** Apply a patch; args are old file path, patch file path, and new file path. */
    public class SamplePatchApplier {
      public static void main(String... args) throws Exception {
        if (!new DefaultDeflateCompatibilityWindow().isCompatible()) {
          System.err.println("zlib not compatible on this system");
          System.exit(-1);
        }
        File oldFile = new File(args[0]); // must be a zip archive args[0]为旧版本文件地址
        Inflater uncompressor = new Inflater(true); // to uncompress the patch
        try (FileInputStream compressedPatchIn = new FileInputStream(args[1]); // args[1]补丁文件地址
            InflaterInputStream patchIn =
                new InflaterInputStream(compressedPatchIn, uncompressor, 32768);
            FileOutputStream newFileOut = new FileOutputStream(args[2])) { // args[2]合成文件地址
          new FileByFileV1DeltaApplier().applyDelta(oldFile, patchIn, newFileOut);
        } finally {
          uncompressor.end();
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    开源云财务软件,财务软件源码,永久免费财务软件
    IOC操作Bean管理(基于注解方式)
    实现Springcloud跨项目相互调用(简易版)
    VALSE2022天津线下参会个人总结8月23日-2
    SpringBoot Web开发----简单功能分析
    vite vue3 config配置篇
    SpringMvc静态资源映射
    青团平台全新上线,效果图渲染单张优惠低至2元封顶
    (二)算法分析
    js基础笔记学习55-练习3判断是否是质数2
  • 原文地址:https://blog.csdn.net/qq_34354257/article/details/134119175