Files
godot-docs-l10n/classes/ru/class_zipreader.rst

171 lines
10 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_ZIPReader:
ZIPReader
=========
**Наследует:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
Позволяет читать содержимое ZIP-файла.
.. rst-class:: classref-introduction-group
Описание
----------------
Этот класс реализует считываниеь, с помощью которого можно извлекать содержимое отдельных файлов внутри архива ZIP. См. также :ref:`ZIPPacker<class_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)
.. rst-class:: classref-reftable-group
Методы
------------
.. table::
:widths: auto
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`close<class_ZIPReader_method_close>`\ (\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`file_exists<class_ZIPReader_method_file_exists>`\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_compression_level<class_ZIPReader_method_get_compression_level>`\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_files<class_ZIPReader_method_get_files>`\ (\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`open<class_ZIPReader_method_open>`\ (\ path\: :ref:`String<class_String>`\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`read_file<class_ZIPReader_method_read_file>`\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) |
+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описания метода
------------------------------
.. _class_ZIPReader_method_close:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **close**\ (\ ) :ref:`🔗<class_ZIPReader_method_close>`
Закрывает основные ресурсы, используемые этим экземпляром.
.. rst-class:: classref-item-separator
----
.. _class_ZIPReader_method_file_exists:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **file_exists**\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_ZIPReader_method_file_exists>`
Возвращает ``true``, если файл содержится в загруженном zip архиве.
Должен быть вызван после :ref:`open()<class_ZIPReader_method_open>`.
.. rst-class:: classref-item-separator
----
.. _class_ZIPReader_method_get_compression_level:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_compression_level**\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_ZIPReader_method_get_compression_level>`
Возвращает уровень сжатия файла в загруженном zip-архиве. Возвращает ``-1``, если файл не существует или произошла какая-либо другая ошибка. Необходимо вызывать после :ref:`open()<class_ZIPReader_method_open>`.
.. rst-class:: classref-item-separator
----
.. _class_ZIPReader_method_get_files:
.. rst-class:: classref-method
:ref:`PackedStringArray<class_PackedStringArray>` **get_files**\ (\ ) :ref:`🔗<class_ZIPReader_method_get_files>`
Возвращает список всех имён файлов в загруженном архиве.
Должен быть вызван после :ref:`open()<class_ZIPReader_method_open>`.
.. rst-class:: classref-item-separator
----
.. _class_ZIPReader_method_open:
.. rst-class:: classref-method
:ref:`Error<enum_@GlobalScope_Error>` **open**\ (\ path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_ZIPReader_method_open>`
Открывает zip-архив по переданному ``path`` и читает его индекс файла.
.. rst-class:: classref-item-separator
----
.. _class_ZIPReader_method_read_file:
.. rst-class:: classref-method
:ref:`PackedByteArray<class_PackedByteArray>` **read_file**\ (\ path\: :ref:`String<class_String>`, case_sensitive\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_ZIPReader_method_read_file>`
Загружает все содержимое файла из загруженного zip-архива в память и возвращает его.
Должен вызываться после :ref:`open()<class_ZIPReader_method_open>`.
.. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)`
.. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)`
.. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)`
.. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)`
.. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)`
.. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)`
.. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`