2018-09-30 10:13:33 -03:00
<?xml version="1.0" encoding="UTF-8" ?>
2023-07-06 10:08:05 +02:00
<class name= "ZIPPacker" inherits= "RefCounted" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../../../doc/class.xsd" >
2018-09-30 10:13:33 -03:00
<brief_description >
2024-11-16 18:00:42 +01:00
Allows the creation of ZIP files.
2018-09-30 10:13:33 -03:00
</brief_description>
<description >
2024-11-16 18:00:42 +01:00
This class implements a writer that allows storing the multiple blobs in a ZIP archive. See also [ZIPReader] and [PCKPacker].
2018-09-30 10:13:33 -03:00
[codeblock]
2024-11-16 18:00:42 +01:00
# Create a ZIP archive with a single file at its root.
2018-09-30 10:13:33 -03:00
func write_zip_file():
2025-05-17 20:00:17 +02:00
var writer = ZIPPacker.new()
var err = writer.open("user://archive.zip")
if err != OK:
return err
writer.start_file("hello.txt")
writer.write_file("Hello World".to_utf8_buffer())
writer.close_file()
2018-09-30 10:13:33 -03:00
2025-05-17 20:00:17 +02:00
writer.close()
return OK
2018-09-30 10:13:33 -03:00
[/codeblock]
</description>
<tutorials >
</tutorials>
<methods >
<method name= "close" >
<return type= "int" enum= "Error" />
<description >
Closes the underlying resources used by this instance.
</description>
</method>
<method name= "close_file" >
<return type= "int" enum= "Error" />
<description >
Stops writing to a file within the archive.
It will fail if there is no open file.
</description>
</method>
<method name= "open" >
<return type= "int" enum= "Error" />
<param index= "0" name= "path" type= "String" />
<param index= "1" name= "append" type= "int" enum= "ZIPPacker.ZipAppend" default= "0" />
<description >
Opens a zip file for writing at the given path using the specified write mode.
This must be called before everything else.
</description>
</method>
<method name= "start_file" >
<return type= "int" enum= "Error" />
<param index= "0" name= "path" type= "String" />
<description >
Starts writing to a file within the archive. Only one file can be written at the same time.
Must be called after [method open].
</description>
</method>
<method name= "write_file" >
<return type= "int" enum= "Error" />
<param index= "0" name= "data" type= "PackedByteArray" />
<description >
Write the given [param data] to the file.
Needs to be called after [method start_file].
</description>
</method>
</methods>
2025-02-25 09:30:46 -05:00
<members >
<member name= "compression_level" type= "int" setter= "set_compression_level" getter= "get_compression_level" default= "-1" >
The compression level used when [method start_file] is called. Use [enum ZIPPacker.CompressionLevel] as a reference.
</member>
</members>
2018-09-30 10:13:33 -03:00
<constants >
<constant name= "APPEND_CREATE" value= "0" enum= "ZipAppend" >
2022-12-06 17:40:46 +00:00
Create a new zip archive at the given path.
2018-09-30 10:13:33 -03:00
</constant>
<constant name= "APPEND_CREATEAFTER" value= "1" enum= "ZipAppend" >
2022-12-06 17:40:46 +00:00
Append a new zip archive to the end of the already existing file at the given path.
2018-09-30 10:13:33 -03:00
</constant>
<constant name= "APPEND_ADDINZIP" value= "2" enum= "ZipAppend" >
2022-12-06 17:40:46 +00:00
Add new files to the existing zip archive at the given path.
2018-09-30 10:13:33 -03:00
</constant>
2025-02-25 09:30:46 -05:00
<constant name= "COMPRESSION_DEFAULT" value= "-1" enum= "CompressionLevel" >
Start a file with the default Deflate compression level ([code]6[/code]). This is a good compromise between speed and file size.
</constant>
<constant name= "COMPRESSION_NONE" value= "0" enum= "CompressionLevel" >
Start a file with no compression. This is also known as the "Store" compression mode and is the fastest method of packing files inside a ZIP archive. Consider using this mode for files that are already compressed (such as JPEG, PNG, MP3, or Ogg Vorbis files).
</constant>
<constant name= "COMPRESSION_FAST" value= "1" enum= "CompressionLevel" >
Start a file with the fastest Deflate compression level ([code]1[/code]). This is fast to compress, but results in larger file sizes than [constant COMPRESSION_DEFAULT]. Decompression speed is generally unaffected by the chosen compression level.
</constant>
<constant name= "COMPRESSION_BEST" value= "9" enum= "CompressionLevel" >
2025-06-15 01:36:10 +02:00
Start a file with the best Deflate compression level ([code]9[/code]). This is slow to compress, but results in smaller file sizes than [constant COMPRESSION_DEFAULT]. Decompression speed is generally unaffected by the chosen compression level.
2025-02-25 09:30:46 -05:00
</constant>
2018-09-30 10:13:33 -03:00
</constants>
</class>