ASP.NET生成压缩文件(rar打包)

来源:互联网 发布:windows掌上电脑 编辑:程序博客网 时间:2024/05/16 17:03

首先引用ICSharpCode.SharpZipLib.dll,没有在这里下载:http://files.cnblogs.com/KenBlove/ICSharpCode.SharpZipLib.rar

压缩打包代码

/// <summary>    /// 生成压缩文件    /// </summary>    /// <param name="strZipPath">生成的zip文件的路径</param>    /// <param name="strZipTopDirectoryPath">源文件的上级目录</param>    /// <param name="intZipLevel">T压缩等级</param>    /// <param name="strPassword">压缩包解压密码</param>    /// <param name="filesOrDirectoriesPaths">源文件路径</param>    /// <returns></returns>    private bool Zip(string strZipPath, string strZipTopDirectoryPath, int intZipLevel, string strPassword, string[] filesOrDirectoriesPaths)    {        try        {            List<string> AllFilesPath = new List<string>();            if (filesOrDirectoriesPaths.Length > 0) // get all files path            {                for (int i = 0; i < filesOrDirectoriesPaths.Length; i++)                {                    if (File.Exists(filesOrDirectoriesPaths[i]))                    {                        AllFilesPath.Add(filesOrDirectoriesPaths[i]);                    }                    else if (Directory.Exists(filesOrDirectoriesPaths[i]))                    {                        GetDirectoryFiles(filesOrDirectoriesPaths[i], AllFilesPath);                    }                }            }            if (AllFilesPath.Count > 0)            {                ZipOutputStream zipOutputStream = new ZipOutputStream(File.Create(strZipPath));                zipOutputStream.SetLevel(intZipLevel);                zipOutputStream.Password = strPassword;                for (int i = 0; i < AllFilesPath.Count; i++)                {                    string strFile = AllFilesPath[i].ToString();                    try                    {                        if (strFile.Substring(strFile.Length - 1) == "") //folder                        {                            string strFileName = strFile.Replace(strZipTopDirectoryPath, "");                            if (strFileName.StartsWith(""))                            {                                strFileName = strFileName.Substring(1);                            }                            ZipEntry entry = new ZipEntry(strFileName);                            entry.DateTime = DateTime.Now;                            zipOutputStream.PutNextEntry(entry);                        }                        else //file                        {                            FileStream fs = File.OpenRead(strFile);                            byte[] buffer = new byte[fs.Length];                            fs.Read(buffer, 0, buffer.Length);                            string strFileName = strFile.Replace(strZipTopDirectoryPath, "");                            if (strFileName.StartsWith(""))                            {                                strFileName = strFileName.Substring(0);                            }                            ZipEntry entry = new ZipEntry(strFileName);                            entry.DateTime = DateTime.Now;                            zipOutputStream.PutNextEntry(entry);                            zipOutputStream.Write(buffer, 0, buffer.Length);                            fs.Close();                            fs.Dispose();                        }                    }                    catch                    {                        continue;                    }                }                zipOutputStream.Finish();                zipOutputStream.Close();                return true;            }            else            {                return false;            }        }        catch        {            return false;        }    }    /// <summary>    /// Gets the directory files.    /// </summary>    /// <param name="strParentDirectoryPath">源文件路径</param>    /// <param name="AllFilesPath">所有文件路径</param>    private void GetDirectoryFiles(string strParentDirectoryPath, List<string> AllFilesPath)    {        string[] files = Directory.GetFiles(strParentDirectoryPath);        for (int i = 0; i < files.Length; i++)        {            AllFilesPath.Add(files[i]);        }        string[] directorys = Directory.GetDirectories(strParentDirectoryPath);        for (int i = 0; i < directorys.Length; i++)        {            GetDirectoryFiles(directorys[i], AllFilesPath);        }        if (files.Length == 0 && directorys.Length == 0) //empty folder        {            AllFilesPath.Add(strParentDirectoryPath);        }    }调用string strZipPath = @"D:\ConsultSystem\mgr\user.zip";        string strZipTopDirectoryPath = @"D:\ConsultSystem\mgr\";        int intZipLevel = 6;        string strPassword = "";        string[] filesOrDirectoriesPaths = new string[] { @"D:\ConsultSystem\mgr\user.txt" };        Zip(strZipPath, strZipTopDirectoryPath, intZipLevel, strPassword, filesOrDirectoriesPaths);


 

原创粉丝点击