class Compress::Zip::Writer
inherits Reference
¶
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
Class methods¶
.open(io : IO, sync_close = false
¶
(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.
.open(filename : String
¶
(filename : String
Creates a new writer to the given filename, yields it to the given block, and closes it at the end.
Methods¶
#add(filename : String
¶
(filename : 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.
#add(entry : Entry
¶
(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.
#add(filename_or_entry : String | Entry, string : String)
¶
(filename_or_entry : String | Entry, string : String)
Adds an entry that will have string as its contents.
#add(filename_or_entry : String | Entry, bytes : Bytes)
¶
(filename_or_entry : String | Entry, bytes : Bytes)
Adds an entry that will have bytes as its contents.