Example usage for org.apache.commons.compress.archivers.zip ZipArchiveOutputStream flush

List of usage examples for org.apache.commons.compress.archivers.zip ZipArchiveOutputStream flush

Introduction

In this page you can find the example usage for org.apache.commons.compress.archivers.zip ZipArchiveOutputStream flush.

Prototype

public void flush() throws IOException 

Source Link

Document

Flushes this output stream and forces any buffered output bytes to be written out to the stream.

Usage

From source file:com.github.braully.graph.DatabaseFacade.java

public static void allResultsZiped(OutputStream out) throws IOException {
    ZipArchiveOutputStream tOut = null;
    try {/*w  w  w  .java2s  . c o  m*/
        tOut = new ZipArchiveOutputStream(out);
        addFileToZip(tOut, DATABASE_DIRECTORY, "");
    } finally {
        tOut.flush();
        tOut.close();
    }
}

From source file:com.ikon.util.ArchiveUtils.java

/**
 * Recursively create ZIP archive from directory 
 *//*from  w  w  w.  j av a2  s .  c  o  m*/
public static void createZip(File path, String root, OutputStream os) throws IOException {
    log.debug("createZip({}, {}, {})", new Object[] { path, root, os });

    if (path.exists() && path.canRead()) {
        ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(os);
        zaos.setComment("Generated by openkm");
        zaos.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);
        zaos.setUseLanguageEncodingFlag(true);
        zaos.setFallbackToUTF8(true);
        zaos.setEncoding("UTF-8");

        // Prevents java.util.zip.ZipException: ZIP file must have at least one entry
        ZipArchiveEntry zae = new ZipArchiveEntry(root + "/");
        zaos.putArchiveEntry(zae);
        zaos.closeArchiveEntry();

        createZipHelper(path, zaos, root);

        zaos.flush();
        zaos.finish();
        zaos.close();
    } else {
        throw new IOException("Can't access " + path);
    }

    log.debug("createZip: void");
}

From source file:com.openkm.util.ArchiveUtils.java

/**
 * Recursively create ZIP archive from directory
 *///from  w  w w. j a va  2 s  . c  om
public static void createZip(File path, String root, OutputStream os) throws IOException {
    log.debug("createZip({}, {}, {})", new Object[] { path, root, os });

    if (path.exists() && path.canRead()) {
        ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(os);
        zaos.setComment("Generated by OpenKM");
        zaos.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);
        zaos.setUseLanguageEncodingFlag(true);
        zaos.setFallbackToUTF8(true);
        zaos.setEncoding("UTF-8");

        // Prevents java.util.zip.ZipException: ZIP file must have at least one entry
        ZipArchiveEntry zae = new ZipArchiveEntry(root + "/");
        zaos.putArchiveEntry(zae);
        zaos.closeArchiveEntry();

        createZipHelper(path, zaos, root);

        zaos.flush();
        zaos.finish();
        zaos.close();
    } else {
        throw new IOException("Can't access " + path);
    }

    log.debug("createZip: void");
}

From source file:com.openkm.util.ArchiveUtils.java

/**
 * Create ZIP archive from file/*from ww  w  .j av  a  2s.  c o m*/
 */
public static void createZip(File path, OutputStream os) throws IOException {
    log.debug("createZip({}, {})", new Object[] { path, os });

    if (path.exists() && path.canRead()) {
        ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(os);
        zaos.setComment("Generated by OpenKM");
        zaos.setCreateUnicodeExtraFields(UnicodeExtraFieldPolicy.ALWAYS);
        zaos.setUseLanguageEncodingFlag(true);
        zaos.setFallbackToUTF8(true);
        zaos.setEncoding("UTF-8");

        log.debug("FILE {}", path);
        ZipArchiveEntry zae = new ZipArchiveEntry(path.getName());
        zaos.putArchiveEntry(zae);
        FileInputStream fis = new FileInputStream(path);
        IOUtils.copy(fis, zaos);
        fis.close();
        zaos.closeArchiveEntry();

        zaos.flush();
        zaos.finish();
        zaos.close();
    } else {
        throw new IOException("Can't access " + path);
    }

    log.debug("createZip: void");
}

From source file:at.spardat.xma.xdelta.JarPatcher.java

/**
 * Close entry./*from   w w  w . j  a v  a 2  s .c  o m*/
 *
 * @param output the output
 * @param outEntry the out entry
 * @param crc the crc
 * @throws IOException Signals that an I/O exception has occurred.
 */
private void closeEntry(ZipArchiveOutputStream output, ZipArchiveEntry outEntry, long crc) throws IOException {
    output.flush();
    output.closeArchiveEntry();
    if (outEntry.getCrc() != crc)
        throw new IOException("CRC mismatch for " + outEntry.getName());
}

From source file:cz.muni.fi.xklinec.zipstream.PostponedEntry.java

/**
 * Writes whole entry to the ZIPArchiveOutputStream.
 * Optionally recomputes CRC32 checksum.
 * //from   www .  j av  a2  s . c o  m
 * @param zop
 * @param recomputeCrc
 * @throws IOException 
 */
public void dump(ZipArchiveOutputStream zop, boolean recomputeCrc) throws IOException {
    ZipArchiveEntry zen = (ZipArchiveEntry) ze.clone();

    // recompute CRC?
    if (recomputeCrc) {
        crc.reset();
        crc.update(byteData);
        ze.setCrc(crc.getValue());
    }

    zop.putArchiveEntry(zen);
    zop.write(byteData, 0, byteData.length);
    zop.closeArchiveEntry();
    zop.flush();
}

From source file:com.amazon.aws.samplecode.travellog.util.DataExtractor.java

public void run() {
    try {//from   w  ww .  j ava2 s.com
        //Create temporary directory
        File tmpDir = File.createTempFile("travellog", "");
        tmpDir.delete(); //Wipe out temporary file to replace with a directory
        tmpDir.mkdirs();

        logger.log(Level.INFO, "Extract temp dir: " + tmpDir);

        //Store journal to props file
        Journal journal = dao.getJournal();
        Properties journalProps = buildProps(journal);
        File journalFile = new File(tmpDir, "journal");
        journalProps.store(new FileOutputStream(journalFile), "");

        //Iterate through entries and grab related photos
        List<Entry> entries = dao.getEntries(journal);
        int entryIndex = 1;
        int imageFileIndex = 1;
        for (Entry entry : entries) {
            Properties entryProps = buildProps(entry);
            File entryFile = new File(tmpDir, "entry." + (entryIndex++));
            entryProps.store(new FileOutputStream(entryFile), "");

            List<Photo> photos = dao.getPhotos(entry);
            int photoIndex = 1;
            for (Photo photo : photos) {
                Properties photoProps = buildProps(photo);

                InputStream photoData = S3PhotoUtil.loadOriginalPhoto(photo);
                String imageFileName = "imgdata." + (imageFileIndex++);
                File imageFile = new File(tmpDir, imageFileName);

                FileOutputStream outputStream = new FileOutputStream(imageFile);
                IOUtils.copy(photoData, outputStream);
                photoProps.setProperty("file", imageFileName);
                outputStream.close();
                photoData.close();

                File photoFile = new File(tmpDir, "photo." + (entryIndex - 1) + "." + (photoIndex++));
                photoProps.store(new FileOutputStream(photoFile), "");
            }

            List<Comment> comments = dao.getComments(entry);
            int commentIndex = 1;
            for (Comment comment : comments) {
                Properties commentProps = buildProps(comment);
                File commentFile = new File(tmpDir, "comment." + (entryIndex - 1) + "." + commentIndex++);
                commentProps.store(new FileOutputStream(commentFile), "");
            }
        }

        //Bundle up the folder as a zip
        final File zipOut;

        //If we have an output path store locally
        if (outputPath != null) {
            zipOut = new File(outputPath);
        } else {
            //storing to S3
            zipOut = File.createTempFile("export", ".zip");
        }

        zipOut.getParentFile().mkdirs(); //make sure directory structure is in place
        ZipArchiveOutputStream zaos = new ZipArchiveOutputStream(zipOut);

        //Create the zip file
        File[] files = tmpDir.listFiles();
        for (File file : files) {
            ZipArchiveEntry archiveEntry = new ZipArchiveEntry(file.getName());
            byte[] fileData = FileUtils.readFileToByteArray(file);
            archiveEntry.setSize(fileData.length);
            zaos.putArchiveEntry(archiveEntry);
            zaos.write(fileData);
            zaos.flush();
            zaos.closeArchiveEntry();
        }
        zaos.close();

        //If outputpath
        if (outputPath == null) {
            TravelLogStorageObject obj = new TravelLogStorageObject();
            obj.setBucketName(bucketName);
            obj.setStoragePath(storagePath);
            obj.setData(FileUtils.readFileToByteArray(zipOut));
            obj.setMimeType("application/zip");

            S3StorageManager mgr = new S3StorageManager();
            mgr.store(obj, false, null); //Store with full redundancy and default permissions
        }

    } catch (Exception e) {
        logger.log(Level.SEVERE, e.getMessage(), e);
    }

}

From source file:at.spardat.xma.xdelta.JarDelta.java

/**
 * Computes the binary differences of two zip files. For all files contained in source and target which
 * are not equal, the binary difference is caluclated by using
 * {@link com.nothome.delta.Delta#compute(byte[], InputStream, DiffWriter)}.
 * If the files are equal, nothing is written to the output for them.
 * Files contained only in target and files to small for {@link com.nothome.delta.Delta} are copied to output.
 * Files contained only in source are ignored.
 * At last a list of all files contained in target is written to <code>META-INF/file.list</code> in output.
 *
 * @param sourceName the original zip file
 * @param targetName a modification of the original zip file
 * @param source the original zip file/*from  ww w  .  j av a 2s  .  co m*/
 * @param target a modification of the original zip file
 * @param output the zip file where the patches have to be written to
 * @throws IOException if an error occurs reading or writing any entry in a zip file
 */
public void computeDelta(String sourceName, String targetName, ZipFile source, ZipFile target,
        ZipArchiveOutputStream output) throws IOException {
    ByteArrayOutputStream listBytes = new ByteArrayOutputStream();
    PrintWriter list = new PrintWriter(new OutputStreamWriter(listBytes));
    list.println(sourceName);
    list.println(targetName);
    computeDelta(source, target, output, list, "");
    list.close();
    ZipArchiveEntry listEntry = new ZipArchiveEntry("META-INF/file.list");
    output.putArchiveEntry(listEntry);
    output.write(listBytes.toByteArray());
    output.closeArchiveEntry();
    output.finish();
    output.flush();
}

From source file:at.spardat.xma.xdelta.test.JarDeltaJarPatcherTest.java

/**
 * Creates a zip file with random content.
 *
 * @author S3460//from   w  w  w. j  a  v  a 2s.  c om
 * @param source the source
 * @return the zip file
 * @throws Exception the exception
 */
private ZipFile makeSourceZipFile(File source) throws Exception {
    ZipArchiveOutputStream out = new ZipArchiveOutputStream(new FileOutputStream(source));
    int size = randomSize(entryMaxSize);
    for (int i = 0; i < size; i++) {
        out.putArchiveEntry(new ZipArchiveEntry("zipentry" + i));
        int anz = randomSize(10);
        for (int j = 0; j < anz; j++) {
            byte[] bytes = getRandomBytes();
            out.write(bytes, 0, bytes.length);
        }
        out.flush();
        out.closeArchiveEntry();
    }
    //add leeres Entry
    out.putArchiveEntry(new ZipArchiveEntry("zipentry" + size));
    out.flush();
    out.closeArchiveEntry();
    out.flush();
    out.finish();
    out.close();
    return new ZipFile(source);
}

From source file:at.spardat.xma.xdelta.test.JarDeltaJarPatcherTest.java

/**
 * Writes a modified version of zip_Source into target.
 *
 * @author S3460/*from  w  ww.ja  v  a 2 s .  c o  m*/
 * @param zipSource the zip source
 * @param target the target
 * @return the zip file
 * @throws Exception the exception
 */
private ZipFile makeTargetZipFile(ZipFile zipSource, File target) throws Exception {
    ZipArchiveOutputStream out = new ZipArchiveOutputStream(new FileOutputStream(target));
    for (Enumeration<ZipArchiveEntry> enumer = zipSource.getEntries(); enumer.hasMoreElements();) {
        ZipArchiveEntry sourceEntry = enumer.nextElement();
        out.putArchiveEntry(new ZipArchiveEntry(sourceEntry.getName()));
        byte[] oldBytes = toBytes(zipSource, sourceEntry);
        byte[] newBytes = getRandomBytes();
        byte[] mixedBytes = mixBytes(oldBytes, newBytes);
        out.write(mixedBytes, 0, mixedBytes.length);
        out.flush();
        out.closeArchiveEntry();
    }
    out.putArchiveEntry(new ZipArchiveEntry("zipentry" + entryMaxSize + 1));
    byte[] bytes = getRandomBytes();
    out.write(bytes, 0, bytes.length);
    out.flush();
    out.closeArchiveEntry();
    out.putArchiveEntry(new ZipArchiveEntry("zipentry" + (entryMaxSize + 2)));
    out.closeArchiveEntry();
    out.flush();
    out.finish();
    out.close();
    return new ZipFile(targetFile);
}