Adds the given file to the given zip file. - Java File Path IO

Java examples for File Path IO:Zip File

Description

Adds the given file to the given zip file.

Demo Code


//package com.java2s;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class Main {
    public static void addToZip(File zipFile, File source, String pathInZip)
            throws IOException {
        addToZip(zipFile, new File[] { source }, pathInZip);
    }/*from w ww .j  ava  2s  . c o  m*/

    /**
     * Adds the given file to the given zip file.
     * @param zipFile the zip file to add to
     * @param files file to add
     */
    public static void addToZip(File zipFile, File[] files, String pathInZip)
            throws IOException {
        FileOutputStream fOut = null;
        ZipOutputStream zipOut = null;

        try {
            fOut = new FileOutputStream(zipFile);
            zipOut = new ZipOutputStream(fOut);

            for (File f : files) {
                addToZip(zipOut, f, pathInZip);
            }
        } finally {
            if (zipOut != null)
                zipOut.close();
            else if (fOut != null)
                fOut.close();
        }
    }

    private static void addToZip(ZipOutputStream zipOut, File source,
            String pathInZip) throws IOException {
        BufferedOutputStream out = null;

        FileInputStream fIn = null;
        BufferedInputStream in = null;

        final int bufSize = 512;
        try {
            // Open our streams
            fIn = new FileInputStream(source);
            in = new BufferedInputStream(fIn, bufSize);

            String filePathInZip = pathInZip + "/" + source.getName();
            if (pathInZip.equals(""))
                filePathInZip = source.getName();

            //         System.out.println("Adding " + filePathInZip);
            ZipEntry entry = new ZipEntry(filePathInZip);
            zipOut.putNextEntry(entry);

            out = new BufferedOutputStream(zipOut, bufSize);

            int count = 0;
            byte[] buffer = new byte[bufSize];
            while ((count = in.read(buffer, 0, buffer.length)) > -1) {
                out.write(buffer, 0, count);
            }
            out.flush();
            zipOut.closeEntry();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (in != null)
                in.close();
            else if (fIn != null)
                fIn.close();
        }
    }
}

Related Tutorials