//dosya : unzip.java
import java.io.*;
import java.util.zip.*;
import javax.swing.JOptionPane;

public class unzip {
    public static int sChunk = 8192;

    public static void main(String[] args) {
    String zipname, source;
    String s="";
    if (args.length != 1) {
      JOptionPane.showMessageDialog(null,"KULLANIM: java Unzip girisdosyasi");
      System.exit(0);
      return;
                          }
    // girdi dosyasını incele
    if (args[0].endsWith(".zip")) {
      zipname = args[0];
      source = args[0].substring(0, args[0].length(  ) - 3);
    }
    else {
      zipname = args[0] + ".zip";
      source = args[0];
         }
    s+="zip dosyası : "+zipname+" içideki sıkıştırılmış \n";
    try {
           FileInputStream in = new FileInputStream(zipname);
           ZipInputStream zin=new ZipInputStream(in);
           byte[] buffer = new byte[sChunk];
           // dosyayı aç (decompress
           try{
           ZipEntry z;
           do
           {
           z=zin.getNextEntry();
           try {
               FileOutputStream out = new FileOutputStream(z.getName());
               int length;
               while ((length = zin.read(buffer, 0, sChunk)) != -1)
               out.write(buffer, 0, length);
               out.close(  );
               }
               catch (IOException e) {
               JOptionPane.showMessageDialog(null,
               "Dosya sıkıştırma hatası : " + args[0] + ".");
               System.exit(0);
                                     }
            s+="    "+z.getName()+" \n";
            }while(z!=null);
              }  catch(NullPointerException npe)
                 { s+="dosyaları açıldı";JOptionPane.showMessageDialog(null,s);
                   System.exit(0);
                 }
           try { zin.close(); } catch (IOException e) {}
            }
            catch(IOException e)
            {
            JOptionPane.showMessageDialog(null,"Dosya açılma hatası : " + zipname);
            System.exit(0);
            }
  }
}
