Распаковать и сохранить файлы с помощью as3?

У меня есть список zip- и rar-файлов в локальной папке.
Все, что мне нужно сделать, это извлечь содержимое zip-файлов, а также rar-файлов и сохранить их в папке с тем же именем, что и у соответствующего архива. файл.
Поскольку я новичок в as3, я понятия не имею об этом.
Есть ли какая-нибудь библиотека для этого???




Заранее спасибо. ..


person Raj A.N.T. Gounder    schedule 28.03.2012    source источник
comment
Вы не можете выполнять операции с локальными файлами без использования AIR или чего-то подобного. Если вы разрабатываете локальное приложение, мой вам совет: попробуйте написать эти части на более мощном языке, таком как C++. Но есть и что-то вроде этого codeazur.com.br/lab/fzip   -  person HeyYO    schedule 28.03.2012


Ответы (2)


Существует несколько библиотек, которые работают с ZIP-файлами в формате as3, но имейте в виду, что это непростая задача для новичка в ActionScript 3.

  • FZip кажется наиболее широко используемым, но он требует, чтобы ZIP-архивы имели контрольные суммы Adler32. Вместе с библиотекой поставляется скрипт Python, который вводит контрольную сумму в ZIP-файлы для предварительной обработки файлов перед их распаковкой.

  • As3-порт JZlib, библиотека as3 для использования с Fzip вместо упомянутого выше скрипта Python.

  • Zip-библиотека AS3 (автор утверждает, что она медленнее, чем FZip), которая позволяет избежать Проблема с контрольной суммой Addler32.

  • В Adobe Air вы можете ознакомиться с подробным объяснением и рабочим примером в эту статью на сайте Adobe.

Надеюсь это поможет!

person danii    schedule 28.03.2012
comment
Для справки, начиная с Flash Player 10 (т.е. давным-давно) FZip не больше не требует внедрения контрольной суммы. Это просто работает. - person Claus Wahlers; 07.01.2014

Чтобы распаковать zip-файлы, вы можете использовать AS3Commons Zip (ранее известный как FZip). Он работает без требования контрольной суммы Adler32, упомянутого в предыдущем ответе.

Вот пример того, как извлечь все файлы из zip-архива. Приведенная ниже функция будет вызываться, когда объект URLLoader загрузит zip-файл и отправит событие Event.COMPLETE:

import org.as3commons.zip.Zip;
import org.as3commons.zip.ZipFile;

private function _onZipDownloaded(e:Event):void {

    var ba:ByteArray = ByteArray(e.target.data);
    var zip:Zip = new Zip();
    zip.loadBytes(ba);

    for(var i:uint = 0; i < zip.getFileCount(); i++) {

        var zipFile:ZipFile = zip.getFileAt(i);
        var extracted:File = directory.resolvePath(zipFile.filename);

        var fs:FileStream = new FileStream();
        fs.open(extracted, FileMode.WRITE);
        fs.writeBytes(zipFile.content);
        fs.close();

    }

}

Очевидно, что в приведенный выше код следует добавить проверку ошибок, но вы поняли...

person djip.co    schedule 04.02.2014