Compress files using the Java ZIP API : File Commands « File Input Output « Java






Compress files using the Java ZIP API

    
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Compress {
  public static void gzipFile(String from, String to) throws IOException {
    FileInputStream in = new FileInputStream(from);
    GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(to));
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = in.read(buffer)) != -1)
      out.write(buffer, 0, bytesRead);
    in.close();
    out.close();
  }

  /** Zip the contents of the directory, and save it in the zipfile */
  public static void zipDirectory(String dir, String zipfile)
      throws IOException, IllegalArgumentException {
    // Check that the directory is a directory, and get its contents
    File d = new File(dir);
    if (!d.isDirectory())
      throw new IllegalArgumentException("Not a directory:  "
          + dir);
    String[] entries = d.list();
    byte[] buffer = new byte[4096]; // Create a buffer for copying
    int bytesRead;

    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));

    for (int i = 0; i < entries.length; i++) {
      File f = new File(d, entries[i]);
      if (f.isDirectory())
        continue;//Ignore directory
      FileInputStream in = new FileInputStream(f); // Stream to read file
      ZipEntry entry = new ZipEntry(f.getPath()); // Make a ZipEntry
      out.putNextEntry(entry); // Store entry
      while ((bytesRead = in.read(buffer)) != -1)
        out.write(buffer, 0, bytesRead);
      in.close(); 
    }
    out.close();
  }

  public static void main(String args[]) throws IOException {
    String from = ".";
    File f = new File(from);
    boolean directory = f.isDirectory(); // Is it a file or directory?

    Compress.zipDirectory(from, from + ".zip");
    Compress.gzipFile(from, from + ".gz");
  }
}

           
         
    
    
    
  








Related examples in the same category

1.Touch: set File Last Modified Time
2.File Copy in Java with NIO
3.File Copy in Java
4.Counts words in a file, outputs results in sorted form
5.Copying a file using channels and buffers
6.Copy files using Java IO APICopy files using Java IO API
7.Mimic the Unix Grep command
8.Grep tools
9.BGrep: a regular expression search utility, like Unix grep
10.File concatenation
11.Delete file using Java IO API
12.Undent - remove leading spaces
13.TeePrintStream tees all PrintStream operations into a file, rather like the UNIX tee(1) command
14.Delete a file from within Java, with error handling
15.DirTree - directory lister, like UNIX ls or DOS and VMS dirDirTree - directory lister, like UNIX ls or DOS and VMS dir
16.Program to empty a directory
17.Report on a file's status in Java
18.Simple directory lister
19.Readonly Files
20.List root directoryList root directory
21.Rename a file in Java
22.FNFilter - directory lister using FilenameFilter
23.mkdir examples
24.Program to remove files matching a name in a directory
25.Ls directory lister modified to use FilenameFilterLs directory lister modified to use FilenameFilter
26.Move a File
27.Word Count
28.Diff: text file difference utility.Diff: text file difference utility.
29.Count chars in a File
30.Move File
31.Get file date and time
32.Return readable file size with selected value measure
33.Move a file
34.File Compressor
35.Recursive Delete File
36.Read number of lines from a File
37.Copy and overwrite files