From b68640b37f059eb03ad80e77e42b3a9c100c1c87 Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 2 Dec 2020 21:06:46 +0100 Subject: [PATCH] Added CRC32 calculation to Stored entries in Zip (caused exceptions) --- .../create/compressors/ParallelZipCompressor.java | 14 ++++++++++---- .../core/create/compressors/ZipCompressor.java | 10 +++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/szum123321/textile_backup/core/create/compressors/ParallelZipCompressor.java b/src/main/java/net/szum123321/textile_backup/core/create/compressors/ParallelZipCompressor.java index b66bd8e..1cbea1f 100644 --- a/src/main/java/net/szum123321/textile_backup/core/create/compressors/ParallelZipCompressor.java +++ b/src/main/java/net/szum123321/textile_backup/core/create/compressors/ParallelZipCompressor.java @@ -24,7 +24,9 @@ import org.apache.commons.compress.archivers.zip.*; import org.apache.commons.compress.parallel.InputStreamSupplier; import java.io.*; +import java.nio.file.Files; import java.util.concurrent.*; +import java.util.zip.CRC32; import java.util.zip.ZipEntry; /* @@ -50,10 +52,14 @@ public class ParallelZipCompressor extends ZipCompressor { protected void addEntry(File file, String entryName, OutputStream arc) throws IOException { ZipArchiveEntry entry = (ZipArchiveEntry)((ZipArchiveOutputStream)arc).createArchiveEntry(file, entryName); - if(ZipCompressor.isDotDat(file.getName())) - entry.setMethod(ZipEntry.STORED); - else - entry.setMethod(ZipEntry.DEFLATED); + if(ZipCompressor.isDotDat(file.getName())) { + entry.setMethod(ZipArchiveOutputStream.STORED); + entry.setSize(file.length()); + entry.setCompressedSize(file.length()); + CRC32 sum = new CRC32(); + sum.update(Files.readAllBytes(file.toPath())); + entry.setCrc(sum.getValue()); + } else entry.setMethod(ZipEntry.DEFLATED); entry.setTime(System.currentTimeMillis()); diff --git a/src/main/java/net/szum123321/textile_backup/core/create/compressors/ZipCompressor.java b/src/main/java/net/szum123321/textile_backup/core/create/compressors/ZipCompressor.java index 89ce9af..b46e666 100644 --- a/src/main/java/net/szum123321/textile_backup/core/create/compressors/ZipCompressor.java +++ b/src/main/java/net/szum123321/textile_backup/core/create/compressors/ZipCompressor.java @@ -27,7 +27,9 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.compress.utils.IOUtils; import java.io.*; +import java.nio.file.Files; import java.time.LocalDateTime; +import java.util.zip.CRC32; public class ZipCompressor extends AbstractCompressor { public static ZipCompressor getInstance() { @@ -51,8 +53,14 @@ public class ZipCompressor extends AbstractCompressor { try (FileInputStream fileInputStream = new FileInputStream(file)){ ZipArchiveEntry entry = (ZipArchiveEntry)((ZipArchiveOutputStream)arc).createArchiveEntry(file, entryName); - if(isDotDat(file.getName())) + if(isDotDat(file.getName())) { entry.setMethod(ZipArchiveOutputStream.STORED); + entry.setSize(file.length()); + entry.setCompressedSize(file.length()); + CRC32 sum = new CRC32(); + sum.update(Files.readAllBytes(file.toPath())); + entry.setCrc(sum.getValue()); + } ((ZipArchiveOutputStream)arc).putArchiveEntry(entry);