class

Compress::Zip::Writer

Inherits Reference / Object

Writes (streams) zip entries to an IO.

Example

require "compress/zip"

File.open("./file.zip", "w") do |file|
  Compress::Zip::Writer.open(file) do |zip|
    # Add a file with a String content
    zip.add "foo.txt", "contents of foo"

    # Add a file and write data to it through an IO
    zip.add("bar.txt") do |io|
      io << "contents of bar"
    end

    # Add a file by referencing a file in the filesystem
    # (the file is automatically closed after this call)
    zip.add("baz.txt", File.open("./some_file.txt"))
  end
end

Constructors

new(io : IO, sync_close : Bool = false)

Creates a new writer to the given io.

Source
new(filename : Path | String)

Creates a new writer to the given filename.

Source

Class methods

open(io : IO, sync_close = false, &)

Creates a new writer to the given io, yields it to the given block, and closes it at the end.

Source
open(filename : Path | String, &)

Creates a new writer to the given filename, yields it to the given block, and closes it at the end.

Source

Instance methods

add(filename : Path | String, &)

Adds an entry that will have the given filename and current time (Time.utc) and yields an IO to write that entry's contents.

Source
add(entry : Entry, &)

Adds an entry and yields IO to write that entry's contents.

You can choose the Entry's compression method before adding it.

  • If the STORED compression method is used, its crc32, compressed size and uncompressed size must be set and be correct with respect to the data that will be written to the yielded IO.
  • If the DEFLATED compression method is used, crc32, compressed size and uncompressed size will be computed from the data written to the yielded IO.

You can also set the Entry's time (which is Time.utc by default) and extra data before adding it to the zip stream.

Source
add(filename_or_entry : Path | String | Entry, string : String) : Nil

Adds an entry that will have string as its contents.

Source
add(filename_or_entry : Path | String | Entry, bytes : Bytes) : Nil

Adds an entry that will have bytes as its contents.

Source
add(filename_or_entry : Path | String | Entry, data : IO) : Nil

Adds an entry that will have its data copied from the given data. If the given data is a ::File, it is automatically closed after data is copied from it.

Source
add_dir(name) : Nil

Adds a directory entry that will have the given name.

Source
close

Closes this zip writer.

Source
closed?

Returns true if this writer is closed.

Source
comment=(comment : String)

Sets the zip file comment

Source
sync_close=(sync_close : Bool)

Whether to close the enclosed IO when closing this writer.

Source
sync_close?

Whether to close the enclosed IO when closing this writer.

Source

Nested types