Как извлечь файлы из использования zip-файла Lua?

Как я извлекаю использование файлов Lua?

Обновление: у Меня теперь есть следующий код, но он отказывает каждый раз, когда он достигает конца функции, но он успешно извлекает все файлы и помещает их в правильное местоположение.

require "zip"

function ExtractZipAndCopyFiles(zipPath, zipFilename, destinationPath)
    local zfile, err = zip.open(zipPath .. zipFilename)

    -- iterate through each file insize the zip file
    for file in zfile:files() do
        local currFile, err = zfile:open(file.filename)
        local currFileContents = currFile:read("*a") -- read entire contents of current file
        local hBinaryOutput = io.open(destinationPath .. file.filename, "wb")

        -- write current file inside zip to a file outside zip
        if(hBinaryOutput)then
            hBinaryOutput:write(currFileContents)
            hBinaryOutput:close()
        end
    end

    zfile:close()
end
-- call the function
ExtractZipAndCopyFiles("C:\\Users\\bhannan\\Desktop\\LUA\\", "example.zip", "C:\\Users\\bhannan\\Desktop\\ZipExtractionOutput\\")

Почему это отказывает каждый раз, когда это достигает конца?

6
задан Brian T Hannan 13 May 2010 в 20:53
поделиться

1 ответ

Краткий ответ:

LuaZip - это облегченная библиотека расширений Lua , используемая для чтения файлов, хранящихся внутри zip-файлов. API очень похож на стандартный API библиотеки ввода-вывода Lua.

Используйте LuaZip для чтения файлов из архива и затем записи их в файловую систему с помощью модуля Lua io . Если вам требуются операции с файловой системой, не поддерживаемые ANSI C, взгляните на LuaFileSystem . LuaFileSystem - это библиотека Lua, разработанная для дополнения набора функций, связанных с файловыми системами, предлагаемых стандартным дистрибутивом Lua. LuaFileSystem предлагает переносимый способ доступа к базовой структуре каталогов и атрибутам файлов.


Дополнительная литература:

LAR - это виртуальная файловая система для Lua, использующая сжатие ZIP.

Если вам нужно прочитать потоки gzip или сжатые tar-файлы , посмотрите gzio . Модуль ввода-вывода файлов Lua gzip эмулирует стандартный модуль ввода-вывода, но работает со сжатыми файлами формата gzip.

7
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: