Как я извлекаю использование файлов 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\\")
Почему это отказывает каждый раз, когда это достигает конца?
Краткий ответ:
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.