创建zip文件. (ICSharpCode.SharpZipLib)

两种方式,但其实还是一种方式:

1.依托于DNN来创建,使用的是DNN自带的SharpZipLib.dll文件。

 

/// <summary>

        /// using DNN way for create zip file

        /// </summary>

        /// <param name="fileName"></param>

        /// <param name="files"></param>

        /// <returns></returns>

        public static bool CreateZipFile2(string fileName, LiftEngineDocumentCollection files)

        {

            bool isCreated = false;

            int level = 9;

            string path = fileName;

            FileStream baseOutputStream = null;

            try

            {

                baseOutputStream = File.Create(path);

                ZipOutputStream zipFile = null;

                try

                {

                    zipFile = new ZipOutputStream(baseOutputStream);

                    zipFile.SetLevel(level);

                    try

                    {

                        foreach (LiftEngineDocumentEntity entity in files)

                        {

                            string file = Path.GetFullPath(HttpRuntime.AppDomainAppPath + entity.FullPath);

                            if (File.Exists(file))

                            {

                                FileSystemUtils.AddToZip(ref zipFile, file, Path.GetFileName(file), "");

                            }

                        }

                        isCreated = true;

                    }

                    finally

                    {

                    }

                }

                catch (Exception exception1)

                {

                    Exception exc = exception1;

                    DotNetNuke.Services.Exceptions.Exceptions.LogException(exception1);

                    isCreated = false;

                }

                finally

                {

                    if (zipFile != null)

                    {

                        zipFile.Finish();

                        zipFile.Close();

                    }

                }

            }

            catch (Exception exception3)

            {

                Exception exception2 = exception3;

                DotNetNuke.Services.Exceptions.Exceptions.LogException(exception2);

                isCreated = false;

            }

            finally

            {

                if (baseOutputStream != null)

                {

                    baseOutputStream.Close();

                }

            }

            return isCreated;

        }

其中的LiftEngineDocumentCollection  是一个文件集合。使用的是LLBLGen来做DAL层。

 

参考代码:DotNetNuke.Entities.Modules.PaWriter.CreateZipFile()

 

第二种方式:使用的是ICSharpCode.SharpZipLib.dll文件,这个文件相对于DNN自带的要新一些。

/// <summary>

/// A method that creates a zip file

/// </summary>

/// <param name="zipFileStoragePath">the storage location</param>

/// <param name="zipFileName">the zip file name</param>

/// <param name="fileToCompress">the file to compress</param>

private void CreateZipFile(string zipFileStoragePath

    , string zipFileName

    , string fileToCompress)

{

    //create our zip file

    ZipFile z = ZipFile.Create(zipFileStoragePath + zipFileName);



    //initialize the file so that it can accept updates

    z.BeginUpdate();



    //add the file to the zip file

    z.Add(fileToCompress);



    //commit the update once we are done

    z.CommitUpdate();

    //close the file

    z.Close();

}

 这种方式有个问题,创建zip文件后,会带有目录。 

 

 

参考:

http://devpinoy.org/blogs/keithrull/archive/2008/01/25/how-to-create-zip-files-in-c-with-sharpziplib-ziplib.aspx
http://codecruncher.blogsome.com/2007/01/04/37/

你可能感兴趣的:(code)