Sample code for 30+ languages & platforms
Java

Controlling paths within a Zip

See more Zip Examples

How to control the paths stored within a .zip.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Zip;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Zip zip = new Zip();

        // This is the directory structure on the local filesystem
        // from which we'll create .zip archives:
        // The root directory is /temp/filesToZip
        //
        // We have these files:
        // /temp/filesToZip/faxCover.doc
        // /temp/filesToZip/exe/Setup.exe
        // /temp/filesToZip/images/cheese.jpg
        // /temp/filesToZip/images/dude.gif
        // /temp/filesToZip/images/img3.gif
        // /temp/filesToZip/images/img4.gif
        // /temp/filesToZip/images/img5.gif
        // /temp/filesToZip/images/scream.jpg
        // /temp/filesToZip/images/imageInfo/scream.xml
        // /temp/filesToZip/images/imageInfo/cheese.xml
        // /temp/filesToZip/text/html/bonaireFishing.html
        // /temp/filesToZip/text/html/upload.html
        // /temp/filesToZip/text/txt/hello.txt
        // /temp/filesToZip/text/txt/HelloWorld123.txt
        // /temp/filesToZip/text/xml/hamlet.xml
        // /temp/filesToZip/text/xml/pigs.xml

        // There are three properties to help control the paths stored
        // within a .zip:
        // AppendFromDir
        // PathPrefix
        // DiscardPaths
        //

        // First we'll demonstrate AppendFromDir
        // When a directory tree is appended via AppendFiles or
        // AppendFilesEx, the AppendFromDir sets the base of the
        // directory tree appended (if the file pattern contains a
        // relative path, or no path at all).

        // Clear the zip object.
        zip.newZip("test1.zip");

        boolean recurse = true;

        zip.setAppendFromDir("/temp/filesToZip");
        zip.appendFiles("*.xml", recurse);

        // The zip will contain:
        // images/imageInfo/scream.xml
        // images/imageInfo/cheese.xml
        // text/xml/hamlet.xml
        // text/xml/pigs.xml

        try {
            zip.writeZipAndClose();

            // Clear the zip object.
            zip.newZip("test2.zip");

            zip.setAppendFromDir("/temp/filesToZip/images");
            zip.appendFiles("*.xml", recurse);
            zip.setAppendFromDir("/temp/filesToZip/text");
            zip.appendFiles("*.xml", recurse);

            // The zip will contain:
            // imageInfo/scream.xml
            // imageInfo/cheese.xml
            // xml/hamlet.xml
            // xml/pigs.xml

            zip.writeZipAndClose();

            // The PathPrefix property adds an arbitrary path prefix to each
            // file in the .zip.
            // For example:

            // Clear the zip object.
            zip.newZip("test3.zip");

            zip.setPathPrefix("chilkat/");

            zip.setAppendFromDir("/temp/filesToZip/images");
            zip.appendFiles("*.xml", recurse);
            zip.setAppendFromDir("/temp/filesToZip/text");
            zip.appendFiles("*.xml", recurse);

            // The zip will contain:
            // chilkat/imageInfo/scream.xml
            // chilkat/imageInfo/cheese.xml
            // chilkat/xml/hamlet.xml
            // chilkat/xml/pigs.xml

            zip.writeZipAndClose();

            // The DiscardPaths property removes the path from each file
            // in the zip:
            // For example:

            // Clear the zip object.
            zip.newZip("test4.zip");

            zip.setPathPrefix("");
            zip.setDiscardPaths(true);

            zip.setAppendFromDir("/temp/filesToZip/");
            zip.appendFiles("*", recurse);

            // The zip will contain:
            // faxCover.doc
            // Setup.exe
            // cheese.jpg
            // dude.gif
            // img3.gif
            // img4.gif
            // img5.gif
            // scream.jpg
            // scream.xml
            // cheese.xml
            // bonaireFishing.html
            // upload.html
            // hello.txt
            // HelloWorld123.txt
            // hamlet.xml
            // pigs.xml

            zip.writeZipAndClose();

            // You can combine PathPrefix with DiscardPaths:

            // Clear the zip object.
            zip.newZip("test5.zip");

            zip.setPathPrefix("chilkat/");
            zip.setDiscardPaths(true);

            zip.setAppendFromDir("/temp/filesToZip/");
            zip.appendFiles("*", recurse);

            // The zip will contain:
            // chilkat/faxCover.doc
            // chilkat/Setup.exe
            // chilkat/cheese.jpg
            // chilkat/dude.gif
            // chilkat/img3.gif
            // chilkat/img4.gif
            // chilkat/img5.gif
            // chilkat/scream.jpg
            // chilkat/scream.xml
            // chilkat/cheese.xml
            // chilkat/bonaireFishing.html
            // chilkat/upload.html
            // chilkat/hello.txt
            // chilkat/HelloWorld123.txt
            // chilkat/hamlet.xml
            // chilkat/pigs.xml

            zip.writeZipAndClose();

            // One last example -- combine DiscardPaths with PathPrefix
            // with multiple calls to AppendFiles:

            // Clear the zip object.
            zip.newZip("test6.zip");

            zip.setDiscardPaths(true);
            zip.setAppendFromDir("/temp/filesToZip/");

            // Get all .gif files:
            zip.setPathPrefix("gif/");
            zip.appendFiles("*.gif", recurse);

            // Get all .jpg files:
            zip.setPathPrefix("jpg/");
            zip.appendFiles("*.jpg", recurse);

            // Get all .xml files:
            zip.setPathPrefix("xml/");
            zip.appendFiles("*.xml", recurse);

            // The zip will contain:
            // jpg/cheese.jpg
            // gif/dude.gif
            // gif/img3.gif
            // gif/img4.gif
            // gif/img5.gif
            // jpg/scream.jpg
            // xml/scream.xml
            // xml/cheese.xml
            // xml/hamlet.xml
            // xml/pigs.xml

            zip.writeZipAndClose();
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }
    }
}