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; } } }