package org.kodejava.util.zip;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZippingFileExample {
public static void main(String[] args) {
String source = "data.txt";
String target = "data.zip";
try (ZipOutputStream zos =
new ZipOutputStream(new FileOutputStream(target));
InputStream is =
ZippingFileExample.class.getResourceAsStream("/" + source)) {
if (is != null) {
// Put a new ZipEntry in the ZipOutputStream
zos.putNextEntry(new ZipEntry(source));
int size;
byte[] buffer = new byte[1024];
// Read data to the end of the source file and write it
// to the zip output stream.
while ((size = is.read(buffer, 0, buffer.length)) > 0) {
zos.write(buffer, 0, size);
}
zos.closeEntry();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Tag Archives: Zip
How do I read entries in a zip / compressed file?
package org.kodejava.util.zip;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipFileExample {
public static void main(String[] args) {
try {
// Create an instance of ZipFile to read a zip file
// called sample.zip
ZipFile zip = new ZipFile(new File("data.zip"));
// Here we start to iterate each entry inside
// sample.zip
for (Enumeration<?> e = zip.entries(); e.hasMoreElements(); ) {
// Get ZipEntry which is a file or a directory
ZipEntry entry = (ZipEntry) e.nextElement();
// Get some information about the entry such as
// file name, its size.
System.out.println("File name: " + entry.getName()
+ "; size: " + entry.getSize()
+ "; compressed size: "
+ entry.getCompressedSize());
System.out.println();
// Now we want to get the content of this entry.
// Get the InputStream, we read through the input
// stream until all the content is read.
InputStream is = zip.getInputStream(entry);
InputStreamReader isr = new InputStreamReader(is);
char[] buffer = new char[1024];
while (isr.read(buffer, 0, buffer.length) != -1) {
String s = new String(buffer);
// Here we just print out what is inside the
// buffer.
System.out.println(s.trim());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
