File Input Output Java

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class Main {
  public static void main(String[] argv) throws Exception {
    ZipFile zf = new ZipFile("a.zip");
    Enumeration files = zf.entries();
    while (files.hasMoreElements()) {
      ZipEntry ze = files.nextElement();
      System.out.println("Decompressing " + ze.getName());
      System.out.println("  Compressed Size: " + ze.getCompressedSize()
          + "  Expanded Size: " + ze.getSize() + "\n");
      BufferedInputStream fin = new BufferedInputStream(zf.getInputStream(ze));
      BufferedOutputStream fout = new BufferedOutputStream(
          new FileOutputStream(ze.getName()));
      int i;
      do {
        i = fin.read();
        if (i != -1)
          fout.write(i);
      } while (i != -1);
      fout.close();
      fin.close();
    }
    zf.close();
  }
}