Skip to main content

Zip File or folder 2

Zip File or folder 2

 Here is alternative source code to zip file or folder in c# ...

Just add reference to the solution for vjslib dll available with C# .NET 


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
using java.util;
using java.util.zip;
using java.io;
namespace BHI.Rats
{
    /// <summary>
    /// compression component
    /// </summary>
    public static class RatsCompressionManager
    {
        #region Compress and Uncompress
        /// <summary>
        /// Zips the folder name to create a zip file. 
        /// </summary>
        /// <remarks>The function is used for running as a worker thread</remarks>
        /// <param name="parameters">An array of 2 objects - folderName and zipFileName</param>
        public static void Zip(object parameters)
        {
            object[] parms = (object[])parameters;
            Zip((string)parms[0], (string)parms[1]);
        }
        /// <summary>
        /// Zips the folder name to create a zip file
        /// </summary>
        /// <param name="folderName"></param>
        /// <param name="zipFileName"></param>
        public static void Zip(string folderName, string zipFileName)
        {
            try
            {
                ICSharpCode.SharpZipLib.Zip.FastZip fz = new ICSharpCode.SharpZipLib.Zip.FastZip();
                fz.CreateZip(zipFileName, folderName, true, "");
            }
            catch (ICSharpCode.SharpZipLib.SharpZipBaseException)
            {
                //Fail silently on cancel
                if (Directory.Exists(folderName))
                {
                    Directory.Delete(folderName, true);
                }
                if (System.IO.File.Exists(zipFileName))
                {
                    System.IO.File.Delete(zipFileName);
                }
            }
            catch
            {
                //Close silently
            }
        }
        /// <summary>
        /// Compress list of files [sourceFiles] to [zipFileName]
        /// </summary>
        /// <param name="zipFileName"></param>
        /// <param name="sourceFiles"></param>
        public static void Zip(string zipFileName, FileInfo[] sourceFiles)
        {
            try
            {
                // get the root folder. NOTE: it assums that the first file is at the root.
                string rootFolder = Path.GetDirectoryName(sourceFiles[0].FullName);
                // compress
                ICSharpCode.SharpZipLib.Zip.FastZip fz = new ICSharpCode.SharpZipLib.Zip.FastZip();
                fz.CreateZip(zipFileName, rootFolder, true, "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Extract [zipFileName] to [destinationPath]
        /// </summary>
        /// <param name="zipFileName"></param>
        /// <param name="destinationPath"></param>
        public static void Extract(string zipFileName, string destinationPath)
        {
            try
            {
                ICSharpCode.SharpZipLib.Zip.FastZip fz = new ICSharpCode.SharpZipLib.Zip.FastZip();
                fz.ExtractZip(zipFileName, destinationPath, "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Extract [zipFileName] to [destinationPath]
        /// </summary>
        /// <param name="zipFileName"></param>
        /// <param name="destinationPath"></param>
        /// <param name="fileNameToExtract">need to be the relative path in the zip file</param>
        public static void ExtractSingleFile(string zipFileName, string destinationPath, string fileNameToExtract)
        {
            try
            {
                ICSharpCode.SharpZipLib.Zip.FastZip fz = new ICSharpCode.SharpZipLib.Zip.FastZip();
                fz.ExtractZip(zipFileName, destinationPath, fileNameToExtract);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Return a list of zip entries (compressed files meta data)
        /// </summary>
        /// <param name="zipFile"></param>
        /// <returns></returns>
        private static List<ZipEntry> getZippedFiles(ZipFile zipFile)
        {
            List<ZipEntry> zipEntries = new List<ZipEntry>();
            java.util.Enumeration zipEnum = zipFile.entries();
            while (zipEnum.hasMoreElements())
            {
                ZipEntry zip = (ZipEntry)zipEnum.nextElement();
                zipEntries.Add(zip);
            }
            return zipEntries;
        }
        /// <summary>
        /// Get the list of files in the zip file
        /// </summary>
        /// <param name="zipFileName"></param>
        /// <returns></returns>
        public static System.Collections.ArrayList GetZipEntries(string zipFileName)
        {
            System.Collections.ArrayList arrZipEntries = new System.Collections.ArrayList();
            ZipFile zipfile = new ZipFile(zipFileName);
            List<ZipEntry> zipFiles = getZippedFiles(zipfile);
            foreach (ZipEntry zipFile in zipFiles)
            {
                arrZipEntries.Add(zipFile.getName());
            }
            zipfile.close();
            System.Collections.ArrayList arrZipEntriesInside = new System.Collections.ArrayList();
            foreach (string strZipFile in arrZipEntries)
            {
                if (string.Compare(Path.GetExtension(strZipFile), ".zip", true) == 0)
                {
                    ExtractSingleFile(zipFileName, Path.GetDirectoryName(zipFileName), Path.GetFileName(strZipFile));
                    ZipFile zipfileinside = new ZipFile(Path.GetDirectoryName(zipFileName) + Path.DirectorySeparatorChar + strZipFile);
                    List<ZipEntry> zipFilesInside = getZippedFiles(zipfileinside);
                    foreach (ZipEntry zipFile in zipFilesInside)
                    {
                        arrZipEntriesInside.Add(zipFile.getName());
                    }
                    zipfileinside.close();
                }
            }
            foreach (string strFilesInsideZip in arrZipEntriesInside)
            {
                arrZipEntries.Add(strFilesInsideZip);
            }
            return arrZipEntries;
        }
        /// <summary>
        /// Extract [zipFileName] to [destinationPath] recursively
        /// </summary>
        /// <param name="zipFileName"></param>
        public static void ExtractRecursively(string zipFileName)
        {
            try
            {
                ICSharpCode.SharpZipLib.Zip.FastZip fz = new ICSharpCode.SharpZipLib.Zip.FastZip();
                fz.ExtractZip(zipFileName, Path.GetDirectoryName(zipFileName) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(zipFileName), "");
                DirectoryInfo diInputDir = new DirectoryInfo(Path.GetDirectoryName(zipFileName) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(zipFileName));
                FileInfo[] fiInfoArr = diInputDir.GetFiles("*.zip", SearchOption.AllDirectories);
                foreach (FileInfo fiInfo in fiInfoArr)
                {
                    if (string.Compare(Path.GetExtension(fiInfo.FullName), ".zip", true) == 0)
                    {
                        ExtractRecursively(fiInfo.FullName);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}

Comments

Popular posts from this blog

Creating package in Oracle Database using Toad For Oracle

What are Packages in Oracle Database A package is  a group   of procedures, functions,  variables   and  SQL statements   created as a single unit. It is used to store together related objects. A package has two parts, Package  Specification  and Package Body.

Resolving 'Setup Account Privileges' error while installing SQL Server

A new installation of Microsoft SQL Server 2012 or Microsoft SQL Server 2008 R2 fails You see the following error message when you try to install a new instance of SQL Server 2012 or SQL Server 2008 R2: Rule "Setup account privileges" failed.

Creating Oracle stored Procedures using TOAD for Oracle

In a database management system, a  stored procedure  is a set of Structured Query Language (SQL) statements with an assigned name that's stored in the database in compiled form so that it can be shared by a number of programs. The use of  stored procedures  can be helpful in controlling  access to data, preserving  data integrity  and  improving  productivity.