writer

You'll need nziplib.dll found here: http://www.icsharpcode.net/OpenSource/NZipLib/default.asp

Download zipwriter.zip

Synopsis:

zipwriter.cs


zipwriter.cs

Synopsis
using System;
using System.IO;
using System.Collections;
using NZlib.Zip;

public class ZipWriter
{
  private string mZipFilename;
  private string mSrcDir;
  private ArrayList mFiles;

  private ZipOutputStream mZipStream;

  public ZipWriter(string zipfilename, string srcdir, ArrayList files)
  {
    mZipFilename = zipfilename;
    mSrcDir = srcdir;
    mFiles = files;
  }

  public void generate()
  {
    Open();

    foreach (string file in mFiles)
    {
      string fqpath = mSrcDir + Globals.LocalSlash + file.ToLower();
      if (!File.Exists(fqpath))
      {
        Console.WriteLine("Cannot find file " + fqpath + " for inclusion into zip file " + mZipFilename);
        continue;
      }
      AddFile(fqpath, file.ToLower());
    }

    Close();        		
  }
  private void Open()
  {
    mZipStream = new ZipOutputStream(new FileStream(mZipFilename, FileMode.Create));
    mZipStream.SetLevel(5); // 0 - store only to 9 - means best compression
  }
  private void Close()
  {
    mZipStream.Finish();
    mZipStream.Close();
  }
  private void AddFile(string fqpath, string file)
  {
    AddFileEntry(file);
    AddFileContents(fqpath);
  }
  private void AddFileEntry(string file)
  {
    mZipStream.PutNextEntry(new ZipEntry(file));
  }
  private void AddFileContents(string fqpath)
  {
    byte[] buffer = GetFileContents(fqpath);
    mZipStream.Write(buffer, 0, buffer.Length);
  }
  private byte[] GetFileContents(string fqpath)
  {
    FileStream fs = File.OpenRead(fqpath);
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    return buffer;
  }
}






Contact me about content on this page using john_web-at-arrizza-dot-com
For Web Master or site problems contact: webadmin-at-arrizza-dot-com
Copyright John Arrizza (c) 2001,2002,2003,2004,2005,2006,2007