package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import nochump.util.zip.ZipEntry;
import nochump.util.zip.ZipFile;
public class zipTest extends Sprite
{
//加载器
public var urlLoader:URLLoader = new URLLoader;
public function zipTest()
{
super();
//加载zip文件
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,complete);
urlLoader.load(new URLRequest('config.zip'));
}
public function complete(evt:Event):void{
var zip:ZipFile = new ZipFile(evt.target.data);
var arr:Array = zip.entries;
for each(var entry:ZipEntry in arr){
var s:String = String(zip.getInput(entry));
//trace("s=",s);
var xml:XML = new XML(s);
trace(entry.name,zip.size)
}
}
}
}
private var zipFiles:Array;
protected function btnToZip_clickHandler(event:MouseEvent=null):void
{
var xlsDir:File=new File(xlsUrlText.text);
zipFiles=[];
findFilesToZip(xmlUrlText.text);
findFilesToZip(xlsDir.resolvePath("csv").nativePath);
addFilesToZip(zipFiles);
}
private function findFilesToZip(path:String):void
{
var file:File=new File(path);
var itemList:Array=file.getDirectoryListing();
for each(var item:File in itemList){
if(item.isDirectory){
findFilesToZip(item.nativePath);
}else{
var ext:String=item.name.split(".")[1];
if(ext=="csv" || ext=="xml"){
zipFiles.push(item);
}
}
}
}
private function addFilesToZip(fileList:Array):void
{
var zipOut:ZipOutput = new ZipOutput();
while(fileList.length>0){
// file info
var item:File=fileList.pop() as File;
var fileName:String = item.name;
var stream:FileStream = new FileStream();
stream.open(item,FileMode.READ);
var fileData:ByteArray = new ByteArray();
stream.readBytes(fileData);
stream.close();
// Add entry to zip
var ze:ZipEntry = new ZipEntry(fileName);
zipOut.putNextEntry(ze);
zipOut.write(fileData);
zipOut.closeEntry();
//log
log("addToZip:"+item.nativePath);
}
// end the zip
zipOut.finish();
// access the zip data
var zipData:ByteArray = zipOut.byteArray;
var zipDir:File=new File(zipUrlText.text);
var zipFile:File = zipDir.resolvePath("data.zip");
var nstream:FileStream = new FileStream();
nstream.open(zipFile,FileMode.WRITE);
nstream.writeBytes(zipData);
nstream.close();
log("------------打包到Zip完成:"+zipFile.nativePath+"--------");
}