¡¡¡¡ÓÉÓÚÍøÂç´ø¿íÓÐÏÞ,ËùÒÔÊý¾ÝÎļþµÄѹËõÓÐÀûÓÚÊý¾ÝÔÚ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!");
¡¡¡¡}
¡¡¡¡}
¡¡¡¡}