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

171 lines
9.8 KiB
ReStructuredText
Raw Permalink 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` after extraction.
var root_dir = DirAccess.open("user://")
var files = reader.get_files()
for file_path in files:
# Якщо поточний запис є каталогом.
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 (Значення не повертається.)`