2012-05-15 65 views
1

我试图将文件夹压缩成.zip文件。我正在使用FZip库。这是我到目前为止:使用fzip压缩文件夹

var zip:FZip = new FZip(); 
zip.addFile("Users/Vincent/Desktop/test/", null); 

我的桌面上的文件夹测试是我要压缩的文件夹。

现在我想压缩该文件夹,并将zip文件放在我的桌面上,但他们正在谈论byteArrays等,我不知道如何做到这一点。 有人可以帮我吗? enter link description here

回答

1

这里是一个工作示例,为了使它简短我使用了大量的匿名函数。

package { 
import deng.fzip.FZip; 

import flash.display.Sprite; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.net.FileReference; 
import flash.net.FileReferenceList; 
import flash.utils.ByteArray; 

public class ZipTest extends Sprite { 
    private var imageRefList : FileReferenceList = new FileReferenceList(); 
    private var saveRef : FileReference = new FileReference(); 
    private var zipName : String = "someName.zip"; 

    public function ZipTest() { 
     var someButton : Sprite = new Sprite(); 
     with(someButton.graphics) { 
      beginFill(0x00ff00); 
      drawRect(0, 0, 50, 50); 
      endFill(); 
     } 
     addChild(someButton).addEventListener(MouseEvent.CLICK, function(event : MouseEvent) : void { 
      var saveZip : Function = function(zip : FZip) : void { 
       var out : ByteArray = new ByteArray(); 
       zip.serialize(out); 

       saveRef.addEventListener(Event.COMPLETE, function(e : Event) : void { 
        trace("done"); 
       }); 
       saveRef.save(out, zipName); 
      }; 

      imageRefList.addEventListener(Event.SELECT, function(e : Event) : void { 
       var zip : FZip = new FZip(); 
       var count : int = imageRefList.fileList.length; 
       for each (var image: FileReference in imageRefList.fileList) { 
        image.addEventListener(Event.COMPLETE, function(e : Event) : void { 
         var img : FileReference = FileReference(e.target); 
         trace(count + " loaded... " + img.name); 
         zip.addFile(img.name, img.data); 

         count--; 
         if (count == 0) saveZip(zip); 
        }); 
        trace("load: " + image.name); 
        image.load(); 
       } 
      }); 
      imageRefList.browse(); 
     }); 
    } 
} 

}