ZIPReader
Наследует: RefCounted < Object
Позволяет читать содержимое ZIP-файла.
Описание
Этот класс реализует считываниеь, с помощью которого можно извлекать содержимое отдельных файлов внутри архива ZIP. См. также ZIPPacker.
# Прочитать один файл из ZIP-архива.
func read_zip_file():
var reader = ZIPReader.new()
var err = reader.open("user://archive.zip")
if err != OK:
return PackedByteArray()
var res = reader.read_file("hello.txt")
reader.close()
return res
# Извлеките все файлы из ZIP-архива, сохранив каталоги внутри.
# Это похоже на функцию «Извлечь все» в большинстве менеджеров архивов.
func extract_all_from_zip():
var reader = ZIPReader.new()
reader.open("res://archive.zip")
# Каталог назначения для извлеченных файлов (эта папка должна существовать до извлечения).
# Не все ZIP-архивы помещают все в одну корневую папку,
# это означает, что после извлечения в `root_dir` может быть создано несколько файлов/папок.
var root_dir = DirAccess.open("user://")
var files = reader.get_files()
for file_path in files:
# If the current entry is a directory.
if file_path.ends_with("/"):
root_dir.make_dir_recursive(file_path)
continue
# Записывайте содержимое файлов, автоматически создавая папки при необходимости.
# Не все ZIP-архивы строго упорядочены, поэтому нам нужно сделать это на всякий случай.
# запись файла предшествует записи папки.
root_dir.make_dir_recursive(root_dir.get_current_dir().path_join(file_path).get_base_dir())
var file = FileAccess.open(root_dir.get_current_dir().path_join(file_path), FileAccess.WRITE)
var buffer = reader.read_file(file_path)
file.store_buffer(buffer)
Методы
close() |
|
file_exists(path: String, case_sensitive: bool = true) |
|
get_compression_level(path: String, case_sensitive: bool = true) |
|
Описания метода
Закрывает основные ресурсы, используемые этим экземпляром.
bool file_exists(path: String, case_sensitive: bool = true) 🔗
Возвращает true, если файл содержится в загруженном zip архиве.
Должен быть вызван после open().
int get_compression_level(path: String, case_sensitive: bool = true) 🔗
Возвращает уровень сжатия файла в загруженном zip-архиве. Возвращает -1, если файл не существует или произошла какая-либо другая ошибка. Необходимо вызывать после open().
PackedStringArray get_files() 🔗
Возвращает список всех имён файлов в загруженном архиве.
Должен быть вызван после open().
Открывает zip-архив по переданному path и читает его индекс файла.
PackedByteArray read_file(path: String, case_sensitive: bool = true) 🔗
Загружает все содержимое файла из загруженного zip-архива в память и возвращает его.
Должен вызываться после open().