import javax.microedition.midlet.*;
import java.io.*;
import java.util.*;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import net.sf.zipme.ZipEntry;
import net.sf.zipme.ZipOutputStream;

/**
 * @author Паша
 */
public class Midlet extends MIDlet {



    String str;
   static  OutputStream os;

public void startApp() {

    //сохраняем запакованный файл
    saveFile("E:/theme_descriptor.xml.zip",createZip(name,name1,level) );

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}


int level=5;

String name[]={"E:/theme_descriptor.xml"};

String name1[]={"theme_descriptor.xml"};


   public static byte[] createZip(String name[],String name1[],int level)
   {
      //name[]  это массив  путей и имён которые будут загружены из фс
      //name1 это массив имён файлов которые будут упакованы в архив
      try
      {
         if(name.length != name1.length)
          return null;
         ByteArrayOutputStream baos= new ByteArrayOutputStream();
         ZipOutputStream zos= new ZipOutputStream(baos);
         zos.setMethod(ZipOutputStream.DEFLATED);
         zos.setLevel(level);//Степень сжатия.
         for(int i=0;i<name.length;i++)
         addFile( zos, name[i],name1[i]);
         zos.close();
         return baos.toByteArray();
       }
      catch(Exception exception)
      {
         return null;
       }
    }

   //Этот метод добовляет файл к архиву.

   public static void addFile(ZipOutputStream zos,String s,String s1) throws Exception
   {
      //s это путь и имя к файлу(0:/Misc/file.txt);
      //s1это имя файла в ариве (file.txt);
      byte b[]=null;
      b=loadFile(s);//Загружает файл из фс,этот метод создаш сам.
      if(b==null)
       return;
      ZipEntry ze=new ZipEntry(s1);
      zos.putNextEntry(ze);
      zos.write(b);
      zos.closeEntry();
    }


public static byte[] loadFile(String s)
   {
       try
       {
         FileConnection fc= (FileConnection)Connector.open(s);
         InputStream is =fc.openInputStream();
         byte[] b=new byte[(int)fc.fileSize()];
         is.read(b);
         is.close();
         fc.close();
         return b;
       }
      catch(Exception exception)
      {
         return null;
       }
 }

  public static void saveFile(String name,byte[] b)
   {
       try
       {
         FileConnection fc=  (FileConnection) Connector.open("file:///"+name, 2);
         if (fss.exists()) {
         fss.delete();
          }
          fss.create();
          OutputStream outputstream;
         (outputstream = fc.openOutputStream()).write(b);
          outputstream.flush();
          outputstream.close();
           fc.close();
       }
      catch(Exception exception)
      {
         return null;
       }
 }



}