Search code examples
androidactionscript-3airzipunzip

How to zip / unzip in AS3 Air?


How do I zip and unzip files using as3 in Air. I am coding in Flash Professional.

I have tried several tutorials but can't get it. I am creating this for apps using Adobe Air.


Solution

  • check out below my sample code. I tested. and how to link SWC file in Flash, your previous question i wrote.

    here is a sample code. simple_unzip

    import com.coltware.airxzip.ZipEntry;
    import com.coltware.airxzip.ZipError;
    import com.coltware.airxzip.ZipFileReader;
    import com.coltware.airxzip.*;
    
    import flash.filesystem.File;
    import flash.utils.ByteArray;
    import flash.net.FileReference;
    import flash.net.FileFilter;
    
    var file:File;
    var fileReference:FileReference;
    var fileFilter:FileFilter;
    
    function unzip_init():void{
    
        fileFilter = new FileFilter("selected your zip file.", "*.zip; *.gz2; *.bz2;");
        file = new File();
        file.browseForOpen("\Users", [fileFilter]);
        file.addEventListener(Event.SELECT, onSelectedFile);
    }
    
    function onSelectedFile(e:Event):void
    {
        var reader:ZipFileReader = new ZipFileReader();
        reader.open(file);
    
        var list:Array = reader.getEntries();
    
            for each(var entry:ZipEntry in list){
    
                    if(entry.isDirectory()){
                            trace("DIR  --->" + entry.getFilename());
                    }
                    else{
                            trace("FILE --->" + entry.getFilename() + "(" + entry.getCompressRate() + ")");
                    }
            }
    }
    
    unzip_init();
    

    how to save File?

    here is a sample code: simple_unzip2


    import com.coltware.airxzip.ZipEntry;
    import com.coltware.airxzip.ZipError;
    import com.coltware.airxzip.ZipFileReader;
    import com.coltware.airxzip.*;
    
    import flash.filesystem.File;
    import flash.utils.ByteArray;
    import flash.net.FileReference;
    import flash.net.FileFilter;
    import flash.filesystem.FileStream;
    import flash.filesystem.FileMode;
    
    var file:File;
    var fileReference:FileReference;
    var fileFilter:FileFilter;
    var baseDir:File = File.documentsDirectory;
    
    function unzip_init():void{
    
        fileFilter = new FileFilter("selected your zip file.", "*.zip; *.gz2; *.bz2;");
        file = new File();
        file.browseForOpen("\Users", [fileFilter]);
        file.addEventListener(Event.SELECT, onSelectedFile);
    }
    
    function onSelectedFile(e:Event):void
    {
        var reader:ZipFileReader = new ZipFileReader();
        reader.open(file);
    
        var list:Array = reader.getEntries();
        var i:int = 0;
    
        for each(var entry:ZipEntry in list)
        {
            var filename:String = entry.getFilename();
    
            if(entry.isDirectory())
            {
    
                trace("DIR  --->" + entry.getFilename());
                //  If entry is directory
                var dir:File = baseDir.resolvePath(filename);
                dir.createDirectory();
            }
            else
            {
                trace("FILE --->" + entry.getFilename() + "(" + entry.getCompressRate() + ")");
                var unzippedBytes:ByteArray = reader.unzip(entry);
                //trace("btyes --->" + unzippedBytes);
                var file:File = baseDir.resolvePath(entry.getFilename());
                var fs:FileStream = new FileStream();
                fs.open(file,FileMode.WRITE);
                fs.writeBytes(unzippedBytes,0,unzippedBytes.length);
                fs.close();
            }
        }
        reader.close();
    }
    
    unzip_init();