ºìÁªLinuxÃÅ»§
Linux°ïÖú

JAVA»ù´¡:ÀûÓÃJavaʵÏÖzipѹËõ½âѹËõ

·¢²¼Ê±¼ä:2006-09-28 00:23:28À´Ô´:ºìÁª×÷Õß:Á¬Â¶
¡¡¡¡ÓÉÓÚÍøÂç´ø¿íÓÐÏÞ,ËùÒÔÊý¾ÝÎļþµÄѹËõÓÐÀûÓÚÊý¾ÝÔÚInternetÉϵĿìËÙ´«Êä,ͬʱҲ½ÚÊ¡·þÎñÆ÷µÄÍâ´æ¿Õ¼ä¡£Java 1.1ʵÏÖÁËI/OÊý¾ÝÁ÷ÓëÍøÂçÊý¾ÝÁ÷µÄµ¥Ò»½Ó¿Ú,Òò´ËÊý¾ÝµÄѹËõ¡¢ÍøÂç´«ÊäºÍ½âѹËõµÄʵÏֱȽÏÈÝÒ×,ÏÂÃæ½éÉÜÀûÓÃZipEntry¡¢ZipInputStreamºÍZipOutputStreamÈý¸öJava ÀàʵÏÖzipÊý¾ÝѹËõ·½Ê½µÄ±à³Ì·½·¨¡£
¡¡¡¡zipѹËõÎļþ½á¹¹:Ò»¸özipÎļþÓɶà¸öentry×é³É,ÿ¸öentryÓÐÒ»¸öΨһµÄÃû³Æ,entryµÄÊý¾ÝÏî´æ´¢Ñ¹ËõÊý¾Ý¡£

¡¡¡¡ÓëzipÎļþÓйصļ¸¸öJavaÀà

¡¡¡¡?ÀàZipEntry

¡¡¡¡public ZipEntry(String name);

¡¡¡¡nameΪָ¶¨µÄÊý¾ÝÏîÃû¡£

¡¡¡¡?ÀàZipOutputStream

¡¡¡¡ZipOutputStreamʵÏÖÁËzipѹËõÎļþµÄдÊä³öÁ÷,Ö§³ÖѹËõºÍ·Ç

¡¡¡¡public ZipOutputStream(OutputStream out);

¡¡¡¡¡ÎÀûÓÃÊä³öÁ÷out¹¹ÔìÒ»¸öZIPÊä³öÁ÷¡£

¡¡¡¡public void setMethod(int method);

¡¡¡¡¡ÎÉèÖÃentryѹËõ·½·¨,ȱʡֵΪDEFLATED¡£

¡¡¡¡public void putNextEntry(ZipEntry newe);

¡¡¡¡¡ÎÈç¹ûµ±Ç°µÄentry´æÔÚÇÒ´¦ÓÚ¼¤»î״̬ʱ,¹Ø±ÕËü,ÔÚzipÎļþ
ÖÐдÈëеÄentry-newe

²¢½«Êý¾ÝÁ÷¶¨Î»ÓÚentryÊý¾ÝÏîµÄÆðʼλÖÃ,ѹËõ·½·¨ÎªsetMethodÖ¸
¶¨µÄ·½·¨¡£

¡¡¡¡?ÀàZipInputStream

¡¡¡¡ZipInputStreamʵÏÖÁËzipѹËõÎļþµÄ¶ÁÊäÈëÁ÷,Ö§³ÖѹËõºÍ·Ç
ѹËõentry¡£ÏÂÃæÊÇËüµÄ

¼¸¸öº¯Êý:

¡¡¡¡public ZipInputStream(InputStream in);

¡¡¡¡¡ÎÀûÓÃÊäÈëÁ÷in¹¹ÔìÒ»¸öZIPÊä³öÁ÷¡£

¡¡¡¡public ZipEntry getNextEntry();

¡¡¡¡¡Î·µ»ØZIPÎļþÖеÄÏÂÒ»¸öentry,²¢½«Êä³öÁ÷¶¨Î»ÔÚ´ËentryÊý¾ÝÏîµÄÆðʼλÖá£

¡¡¡¡public void closeEntry();

¡¡¡¡¡Î¹Ø±Õµ±Ç°µÄzip entry,²¢½«Êý¾ÝÁ÷¶¨Î»ÓÚÏÂÒ»¸öentryµÄÆðʼλÖá£

¡¡¡¡³ÌÐò´úÂë¼°Æä×¢ÊÍ

¡¡¡¡ÏÂÁеijÌÐòʵÏÖÁËÊý¾ÝÎļþzip·½Ê½µÄѹËõºÍ½âѹËõ·½·¨¡£randomData()º¯ÊýËæ»úÉú³É50¸ödoubleÊý¾Ý,²¢·ÅÔÚdoc×Ö·û´®±äÁ¿ÖÐ;openFile()º¯Êý¶ÁÈ¡ZIPѹËõÎļþ;saveFile()º¯Êý½«Ëæ»úÉú³ÉµÄÊý¾Ý´æµ½ZIP¸ñʽµÄѹËõÎļþÖС£

¡¡¡¡import java.util.zip.*;

¡¡¡¡import java.awt.event.*;

¡¡¡¡import java.awt.*;

¡¡¡¡import java.lang.Math;

¡¡¡¡import java.io.*;

¡¡¡¡public class TestZip extends Frame implements
ActionListener {

¡¡¡¡TextArea textarea; ¡ÎÏÔʾÊý¾ÝÎļþµÄ¶àÐÐÎı¾ÏÔʾÓò

¡¡¡¡TextField infotip; ¡ÎÏÔʾÊý¾ÝÎļþδѹËõ´óС¼°Ñ¹Ëõ´óСµ¥
ÐÐÎı¾ÏÔʾÓò

¡¡¡¡String doc; ¡Î´æ´¢Ëæ»úÉú³ÉµÄÊý¾Ý

¡¡¡¡long doczipsize = 0;¡ÎѹËõÊý¾ÝÎļþµÄ´óС

¡¡¡¡public TestZip(){

¡¡¡¡¡ÎÉú³É²Ëµ¥

¡¡¡¡MenuBar menubar = new MenuBar();

¡¡¡¡setMenuBar(menubar);

¡¡¡¡Menu file = new Menu("File",true);

¡¡¡¡menubar.add(file);

¡¡¡¡MenuItem neww= new MenuItem("New");

¡¡¡¡neww.addActionListener(this);

¡¡¡¡file.add(neww);

¡¡¡¡MenuItem open=new MenuItem("Open");

¡¡¡¡open.addActionListener(this);

¡¡¡¡file.add(open);

¡¡¡¡MenuItem save=new MenuItem("Save");

¡¡¡¡save.addActionListener(this);

¡¡¡¡file.add(save);

¡¡¡¡MenuItem exit=new MenuItem("Exit");

¡¡¡¡exit.addActionListener(this);

¡¡¡¡file.add(exit);

¡¡¡¡¡ÎËæ»úÉú³ÉµÄÊý¾ÝÎļþµÄ¶àÐÐÎı¾ÏÔʾÓò

¡¡¡¡add("Center",textarea = new TextArea());

¡¡¡¡¡ÎÌáʾÎı¾Ô­Ê¼´óС¡¢Ñ¹Ëõ´óСµÄµ¥ÐÐÎı¾ÏÔʾÓò

¡¡¡¡add("South",infotip = new TextField());

¡¡¡¡}

¡¡¡¡public static void main(String args[]){

¡¡¡¡TestZip ok=new TestZip();

¡¡¡¡ok.setTitle("zip sample");

¡¡¡¡ok.setSize(600,300);

¡¡¡¡ok.show();

¡¡¡¡}

¡¡¡¡private void randomData(){

¡¡¡¡¡ÎËæ»úÉú³É50¸ödoubleÊý¾Ý,²¢·ÅÔÚdoc×Ö·û´®±äÁ¿ÖС£

¡¡¡¡doc="";

¡¡¡¡for(int i=1;i<51;i++){

¡¡¡¡ double rdm=Math.random()*10;

¡¡¡¡ doc=doc+new Double(rdm).toString();

¡¡¡¡ if(i%5 == 0) doc=doc+"\n";

¡¡¡¡ else doc=doc+" ";

¡¡¡¡}

¡¡¡¡doczipsize = 0;

¡¡¡¡showTextandInfo();

¡¡¡¡}

¡¡¡¡private void openFile(){

¡¡¡¡¡Î´ò¿ªzipÎļþ,½«ÎļþÄÚÈݶÁÈëdoc×Ö·û´®±äÁ¿ÖС£

¡¡¡¡FileDialog dlg=new
FileDialog(this,"Open",FileDialog.LOA D);

¡¡¡¡dlg.show();

¡¡¡¡String filename=dlg.getDirectory()+dlg.getFile();

¡¡¡¡try{

¡¡¡¡¡Î´´½¨Ò»¸öÎļþʵÀý

¡¡¡¡File f=new File(filename);

¡¡¡¡if(!f.exists()) return; ¡ÎÎļþ²»´æÔÚ,Ôò·µ»Ø

¡¡¡¡¡ÎÓÃÎļþÊäÈëÁ÷¹¹½¨ZIPѹËõÊäÈëÁ÷

¡¡¡¡ZipInputStream zipis=new ZipInputStream(new
FileInputStream(f));

¡¡¡¡zipis.getNextEntry();

¡¡¡¡¡Î½«ÊäÈëÁ÷¶¨Î»ÔÚµ±Ç°entryÊý¾ÝÏîλÖÃ

¡¡¡¡DataInputStream dis=new DataInputStream(zipis);

¡¡¡¡¡ÎÓÃZIPÊäÈëÁ÷¹¹½¨DataInputStream

¡¡¡¡doc=dis.readUTF();¡Î¶ÁÈ¡ÎļþÄÚÈÝ

¡¡¡¡dis.close();¡Î¹Ø±ÕÎļþ

¡¡¡¡doczipsize = f.length();¡Î»ñÈ¡ZIPÎļþ³¤¶È

¡¡¡¡showTextandInfo();¡ÎÏÔʾÊý¾Ý

¡¡¡¡}

¡¡¡¡catch(IOException ioe){

¡¡¡¡System.out.println(ioe);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡private void saveFile(){

¡¡¡¡¡Î´ò¿ªzipÎļþ,½«doc×Ö·û´®±äÁ¿Ð´ÈëzipÎļþÖС£

¡¡¡¡FileDialog dlg=new
FileDialog(this,"Save",FileDialog.SAVE);

¡¡¡¡dlg.show();

¡¡¡¡String filename=dlg.getDirectory()+dlg.getFile();

¡¡¡¡try{

¡¡¡¡¡Î´´½¨Ò»¸öÎļþʵÀý

¡¡¡¡File f=new File(filename);

¡¡¡¡if(!f.exists()) return; ¡ÎÎļþ²»´æÔÚ,Ôò·µ»Ø

¡¡¡¡¡ÎÓÃÎļþÊä³öÁ÷¹¹½¨ZIPѹËõÊä³öÁ÷

¡¡¡¡ZipOutputStream zipos=new ZipOutputStream(new
FileOutputStream(f));

¡¡¡¡zipos.setMethod(ZipOutputStream.DEFLATED); ¡ÎÉèÖÃѹËõ·½
·¨

¡¡¡¡zipos.putNextEntry(new ZipEntry("zip"));

¡¡¡¡¡ÎÉú³ÉÒ»¸öZIP entry,дÈëÎļþÊä³öÁ÷ÖÐ,²¢½«Êä³öÁ÷¶¨Î»ÓÚ
entryÆðʼ´¦¡£

¡¡¡¡DataOutputStream os=new DataOutputStream(zipos);

¡¡¡¡¡ÎÓÃZIPÊä³öÁ÷¹¹½¨DataOutputStream;

¡¡¡¡os.writeUTF(doc);¡Î½«Ëæ»úÉú³ÉµÄÊý¾ÝдÈëÎļþÖÐ

¡¡¡¡os.close();¡Î¹Ø±ÕÊý¾ÝÁ÷

¡¡¡¡doczipsize = f.length();

¡¡¡¡¡Î»ñȡѹËõÎļþµÄ³¤¶È

¡¡¡¡showTextandInfo();¡ÎÏÔʾÊý¾Ý

¡¡¡¡}

¡¡¡¡catch(IOException ioe){

¡¡¡¡System.out.println(ioe);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡private void showTextandInfo(){

¡¡¡¡¡ÎÏÔʾÊý¾ÝÎļþºÍѹËõÐÅÏ¢

¡¡¡¡
textarea.replaceRange(doc,0,textarea.getText().length());

¡¡¡¡infotip.setText("uncompressed size:
"+doc.length()+"compressed size: "+dc zipsize);

¡¡¡¡}

¡¡¡¡public void actionPerformed(ActionEvent e){

¡¡¡¡String arg = e.getActionCommand();

¡¡¡¡if ("New".equals(arg)) randomData();

¡¡¡¡else if ("Open".equals(arg)) openFile();

¡¡¡¡else if ("Save".equals(arg)) saveFile();

¡¡¡¡else if ("Exit".equals(arg)){

¡¡¡¡ dispose();¡Î¹Ø±Õ´°¿Ú

¡¡¡¡ System.exit(0);¡Î¹Ø±Õ³ÌÐò

¡¡¡¡}

¡¡¡¡else {

¡¡¡¡ System.out.println("no this command!");

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ