Skip to content

Commit

Permalink
Fix ZipEntry metadata copying
Browse files Browse the repository at this point in the history
    RELNOTES: None
    PiperOrigin-RevId: 340663276
  • Loading branch information
Luca Di Grazia committed Sep 4, 2022
1 parent d359866 commit f23778a
Showing 1 changed file with 10 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@

import com.android.tools.r8.ByteDataView;
import com.google.common.io.ByteStreams;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Enumeration;
import java.util.function.Predicate;
import java.util.zip.CRC32;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

/** Utilities for working with zip files. */
Expand Down Expand Up @@ -68,15 +69,13 @@ private static ZipEntry copyEntryMetadata(ZipEntry entry) {

public static void copyEntries(
Path input, ZipOutputStream zipOutputStream, Predicate<String> exclude) throws IOException {
try (ZipFile zipFile = new ZipFile(input.toFile())) {
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
if (!exclude.test(entry.getName())) {
zipOutputStream.putNextEntry(copyEntryMetadata(entry));
try (InputStream stream = zipFile.getInputStream(entry)) {
ByteStreams.copy(stream, zipOutputStream);
}
try (ZipInputStream zipInputStream =
new ZipInputStream(new BufferedInputStream(Files.newInputStream(input)))) {
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
if (!exclude.test(zipEntry.getName())) {
zipOutputStream.putNextEntry(copyEntryMetadata(zipEntry));
ByteStreams.copy(zipInputStream, zipOutputStream);
}
}
}
Expand Down

0 comments on commit f23778a

Please sign in to comment.