This module provides support for reading and writing ZIP archives in Julia.
Install via the Julia package manager, Pkg.add("InfoZIP").
Depends on the Info ZIP zip and uzip tools.
If these are not installed the ZipFile.jl
library is used instead.
InfoZIP.unzip(archive, [outputdir]) extracts an archive to files in "outputdir" (or in the current directory by default).
InfoZIP.unzip("foo.zip", "/tmp/")
InfoZIP.unzip(http_get("http://foo.com/foo.zip", "/tmp/"))Use open_zip open a ZIP Archive for read and/or write.
Use create_zip to create a new ZIP Archive in one step.
A ZIP Archive can be either a .ZIP file or an Array{UInt8,1}.
The result of open_zip(archive) is iterable and can be accessed as an
Associative collection.
# Print size of each file in "foo.zip"...
for (filename, data) in open_zip("foo.zip")
    println("$filename has $(length(data)) bytes")
end
# Read contents of "bar.csv" from "foo.zip"...
data = open_zip("foo.zip")["foo/bar.csv"]
# Read "foo.zip" from in-memory ZIP archive...
zip_data = http_get("http://foo.com/foo.zip")
csv_data = open_zip(zip_data)["bar.csv"]
# Create a Dict from a ZIP archive...
Dict(open_zip("foo.zip"))
Dict{AbstractString,Any} with 2 entries:
  "hello.txt"    => "Hello!\n"
  "foo/text.txt" => "text\n"
# Create "foo.zip" with two files...
open_zip("foo.zip", "w") do z
    z["hello.txt"] = "Hello!\n"
    z["bar.csv"] = "1,2,3\n"
end
# Create in-memory ZIP archive in "buf"...
buf = UInt8[]
open_zip(buf) do z
    z["hello.txt"] = "Hello!\n"
    z["bar.csv"] = "1,2,3\n"
end
http_put("http://foo.com/foo.zip", buf)
# Add a new file to an existing archive"...
open_zip("foo.zip", "r+") do z
    z["newfile.csv"] = "1,2,3\n"
end
# Update an existing file in an archive"...
open_zip("foo.zip", "r+") do z
    z["newfile.csv"] = lowercase(z["newfile.csv"])
end
create_zip([destination], content) creates a ZIP archive from "content' in a single step. If "destination" is omitted the archive is returned as Array{UInt8}.
# Create archive from Dict...
create_zip("foo.zip", Dict("hello.txt" => "Hello!\n",
                           "bar.csv" => "1,2,3\n"))
# Create archive from Pairs...
create_zip("foo.zip", "hello.txt" => "Hello!\n",
                      "bar.csv" => "1,2,3\n"))
# Create archive from Tuples...
zip_data = create_zip([("hello.txt", "Hello!\n"),
                       ("bar.csv" => "1,2,3\n")])
# Create archive from filenames array and data array...
zip_data = create_zip(["hello.txt", "bar.csv"],
                      ["Hello!\n",  "1,2,3\n"])
# Create archive from names of files in the current directory...
create_zip("foo.zip", ["hello.txt", "bar.csv"])
or
zip_data = create_zip(["hello.txt", "bar.csv"])Based on fhs/ZipFile.jl#16, thanks @timholy
