Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I wrote the method below which seems to be working fine.</p> <pre><code>public static void zipFiles(final GcsFilename targetZipFile, final GcsFilename... filesToZip) throws IOException { Preconditions.checkArgument(targetZipFile != null); Preconditions.checkArgument(filesToZip != null); Preconditions.checkArgument(filesToZip.length &gt; 0); final int fetchSize = 4 * 1024 * 1024; final int readSize = 2 * 1024 * 1024; GcsOutputChannel outputChannel = null; ZipOutputStream zip = null; try { GcsFileOptions options = new GcsFileOptions.Builder().mimeType(MediaType.ZIP.toString()).build(); outputChannel = GCS_SERVICE.createOrReplace(targetZipFile, options); zip = new ZipOutputStream(Channels.newOutputStream(outputChannel)); GcsInputChannel readChannel = null; for (GcsFilename file : filesToZip) { try { final GcsFileMetadata meta = GCS_SERVICE.getMetadata(file); if (meta == null) { LOGGER.warning(file.toString() + " NOT FOUND. Skipping."); continue; } //int fileSize = (int) meta.getLength(); // LOGGER.fine("adding " + file.toString()); ZipEntry entry = new ZipEntry(file.getObjectName()); zip.putNextEntry(entry); readChannel = GCS_SERVICE.openPrefetchingReadChannel(file, 0, fetchSize); final ByteBuffer buffer = ByteBuffer.allocate(readSize); int bytesRead = 0; while (bytesRead &gt;= 0) { bytesRead = readChannel.read(buffer); buffer.flip(); zip.write(buffer.array(), buffer.position(), buffer.limit()); buffer.rewind(); buffer.limit(buffer.capacity()); } } finally { zip.closeEntry(); readChannel.close(); } } } finally { zip.flush(); zip.close(); outputChannel.close(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload