class Compress::Zip::Writer

Overview

Writes (streams) zip entries to anIO.

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

Defined in:

compress/zip/writer.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class Reference

==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other)
==
, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil)
same?
, to_s(io : IO) : Nil to_s

Constructor methods inherited from class Reference

new new, unsafe_construct(address : Pointer, *args, **opts) : self unsafe_construct

Class methods inherited from class Reference

pre_initialize(address : Pointer) pre_initialize

Instance methods inherited from class Object

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash
hash
, in?(collection : Object) : Bool
in?(*values : Object) : Bool
in?
, inspect(io : IO) : Nil
inspect : String
inspect
, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil!
not_nil!
, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String
to_json
, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil
to_pretty_json
, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(io : IO) : Nil
to_yaml : String
to_yaml
, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

Class methods inherited from class Object

from_json(string_or_io : String | IO, root : String)
from_json(string_or_io : String | IO)
from_json
, from_yaml(string_or_io : String | IO) from_yaml

Macros inherited from class Object

class_getter(*names, &block) class_getter, class_getter!(*names) class_getter!, class_getter?(*names, &block) class_getter?, class_property(*names, &block) class_property, class_property!(*names) class_property!, class_property?(*names, &block) class_property?, class_setter(*names) class_setter, def_clone def_clone, def_equals(*fields) def_equals, def_equals_and_hash(*fields) def_equals_and_hash, def_hash(*fields) def_hash, delegate(*methods, to object) delegate, forward_missing_to(delegate) forward_missing_to, getter(*names, &block) getter, getter!(*names) getter!, getter?(*names, &block) getter?, property(*names, &block) property, property!(*names) property!, property?(*names, &block) property?, setter(*names) setter

Constructor Detail

def self.new(io : IO, sync_close : Bool = false) #

Creates a new writer to the givenio.


def self.new(filename : Path | String) #

Creates a new writer to the givenfilename.


Class Method Detail

def self.open(io : IO, sync_close = false, &) #

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


def self.open(filename : Path | String, &) #

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


Instance Method Detail

def add(filename : Path | String, &) #

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


def add(entry : Entry, &) #

Adds an entry and yieldsIO 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 sizemust be set and be correct with respect to the data that will be written to the yieldedIO.
  • 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 isTime.utc by default) and extra data before adding it to the zip stream.


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

Adds an entry that will havestring as its contents.


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

Adds an entry that will havebytes as its contents.


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

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


def add_dir(name) : Nil #

Adds a directory entry that will have the givenname.


def close : Nil #

Closes this zip writer.


def closed? : Bool #

Returnstrue if this writer is closed.


def comment=(comment : String) #

Sets the zip file comment


def sync_close=(sync_close : Bool) #

Whether to close the enclosedIO when closing this writer.


def sync_close? : Bool #

Whether to close the enclosedIO when closing this writer.