class Compress::Zip::Writer

Overview

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

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, 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

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! 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, root : String)
from_json(string_or_io) from_json
, from_yaml(string_or_io : String | IO) from_yaml

Constructor Detail

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

Creates a new writer to the given io.

def self.new(filename : String)Source

Creates a new writer to the given filename.

Class Method Detail

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

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

def self.open(filename : String, &)Source

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

Instance Method Detail

def add(filename : String, &)Source

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

def add(entry : Entry, &)Source

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.

def add(filename_or_entry : String | Entry, string : String) : NilSource

Adds an entry that will have string as its contents.

def add(filename_or_entry : String | Entry, bytes : Bytes) : NilSource

Adds an entry that will have bytes as its contents.

def add(filename_or_entry : String | Entry, data : IO) : NilSource

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.

def add_dir(name) : NilSource

Adds a directory entry that will have the given name.

def close : NilSource

Closes this zip writer.

def closed? : BoolSource

Returns true if this writer is closed.

def comment=(comment)Source

Sets the zip file comment

def sync_close=(sync_close)Source

Whether to close the enclosed IO when closing this writer.

def sync_close? : BoolSource

Whether to close the enclosed IO when closing this writer.

© 2012–2021 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.2.1/Compress/Zip/Writer.html