项目地址
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>
生成补丁
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();
}
}
}
应用补丁
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 a服务器托管网re 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();
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 从一道题来看看golang中的slice作为参数时的现象
1、题目 最近看群友在群里问一道关于golang中slice的题,题目如下: package main import “fmt” func main() { k := []int{1, 2, 3, 4} k = append(k, 5, 6) fmt.Prin…