Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zip

Wrapper for the zip library

Usage

zip

import zip/zipfiles
# Opens a zip file for reading, writing or appending.
var z: ZipArchive
  if not z.open(filename):
    echo "Opening zip failed"
    quit(1)

# extracts all files from archive z to the destination directory.
z.extractAll("files/td")

read and write using Stream

import zip/zipfiles
import streams
var z: ZipArchive
# add new file
z.open(filename, fmWrite)
z.addFile("foo.bar", newStringStream("content"))

# read file to string stream
z.open(filename, fmRead)
let outStream = newStringStream("")
z.extractFile("foo.bar", outStream)

load archive from memory

var z: ZipArchive
z.fromBuffer(archiveData)

zlib

import zip/zlib
uncompress(compress(text, stream=RAW_DEFLATE), stream=RAW_DEFLATE) 
uncompress(compress(text, stream=ZLIB_STREAM), stream=ZLIB_STREAM) 
uncompress(compress(text, stream=GZIP_STREAM), stream=GZIP_STREAM) 
uncompress(compress(text, stream=ZLIB_STREAM), stream=DETECT_STREAM) 
uncompress(compress(text, stream=GZIP_STREAM), stream=DETECT_STREAM) 
compress(text, stream=RAW_DEFLATE)
compress(text, stream=GZIP_STREAM)
compress(text, stream=ZLIB_STREAM)

gzip

import zip/gzipfiles
# read text data
let arch_gz = newGzFileStream("files/gzipfiletest.txt.gz").readAllAndClose()

read from archive and write to new archive.

let w = newGzFileStream("files/gzipfiletest.data.gz", fmWrite)
let chunk_size = 32
var num_bytes = text.len
var idx = 0
while true:
  w.writeData(text[idx].unsafeAddr, min(num_bytes, chunk_size))
  if num_bytes < chunk_size:
    break
  dec(num_bytes, chunk_size)
  inc(idx, chunk_size)
w.close()

read line by line confirming that behavior of atEnd is consistent with standard FileStream

let gzfs = newGzFileStream("files/gzipfiletest.txt.gz")
  while not gzfs.atEnd():
    discard gzfs.readLine()

About

zip wrapper for Nim

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages