Tutorial List
Home
Interview Questions
Interview
Interview Questions
Links
Web Home
About Us

Compress files using the Java ZIP API


Here are source code for 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");
}

}

No comments: