2016-03-08 62 views
-1

如何检查所有压缩文件已被提取?AS3:如何检查,所有压缩文件已被提取?

var reader: ZipFileReader = new ZipFileReader(); 
    reader.addEventListener(ZipEvent.ZIP_DATA_UNCOMPRESS, zipDataUncompressHandler); 
    var zipFile: File = new File(zipFilePath); 
    reader.open(zipFile); 



    var list: Array = reader.getEntries(); 
    zipFileCount = list.length; 
    trace(zipFileCount + " Numbers of items"); 

    for each(var entry: ZipEntry in list) { 
     var filename: String = entry.getFilename(); 

     if (entry.isDirectory()) { 
      trace("DIR --->" + filename); 
     } else { 
      trace("FILE --->" + filename + "(" + entry.getCompressRate() + ")"); 
      reader.unzipAsync(entry); 
     } 
     zipFileWritedCount = zipFileWritedCount + 1; 
    } 
    function zipDataUncompressHandler(e: ZipEvent): void { 

     var entry: ZipEntry = e.entry; 

     var zfile: File = File.userDirectory.resolvePath('somefolder' + File.separator + entry.getFilename()); 
     var fs: FileStream = new FileStream(); 
     fs.open(zfile, FileMode.WRITE); 
     fs.writeBytes(e.data); 

     fs.close(); 

     trace("Refresh Scene"); 
     //include "RefreshScene.as"; 

    } 

我的文件被提取,但我需要检查所有文件实际提取。 有什么办法可以做到这一点。

我在使用zip文件时使用airxzip

此外,如果我可以添加一个装载机。

回答

0
  • 可以缩短zipFileWritedCount = zipFileWritedCount + 1;

    仅仅通过使用zipFileWritedCount +=1;甚至 zipFileWritedCount++;

  • 不管怎么说用于检查 “的所有文件中提取” 量提到你可以尝试 的Equality ==operatormanual

简单的例子:

for each(var entry: ZipEntry in list) 
{ 
    var filename: String = entry.getFilename(); 

    if (entry.isDirectory()) { trace("DIR --->" + filename); } 
    else 
    { 
     trace("FILE --->" + filename + "(" + entry.getCompressRate() + ")"); 
     reader.unzipAsync(entry); 
    } 
    zipFileWritedCount += 1; //add plus 1 

    if (zipFileWritedCount == zipFileCount) //if Equal to zipFileCount.. 
    { 
     trace ("unzipped all files..."); 
     trace ("zipFileCount: " + zipFileCount + " -VS- " + "zipFileWritedCount: " + zipFileWritedCount) 
    } 

}