Asp.net压缩文件

来源:互联网 发布:超声波检测软件 编辑:程序博客网 时间:2024/05/17 05:03
    using ICSharpCode.SharpZipLib.Zip; //引用        /// <summary>    /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略)    /// </summary>    /// <param name="dirPath">被压缩的文件夹夹路径</param>    /// <param name="zipFilePath">生成压缩文件的路径(带后缀),为空则默认与被压缩文件夹同一级目录,名称为:文件夹名+.zip</param>        /// <returns>是否压缩成功</returns>    public static bool ZipFile(string dirPath, string zipFilePath)    {        string err = "";        if (dirPath == string.Empty)        {            err = "要压缩的文件夹不能为空!";            return false;        }        if (!Directory.Exists(dirPath))        {            err = "要压缩的文件夹不存在!";            return false;        }        //压缩文件名为空时使用文件夹名+.zip        if (zipFilePath == string.Empty)        {            if (dirPath.EndsWith(""))            {                dirPath = dirPath.Substring(0, dirPath.Length - 1);            }            zipFilePath = dirPath + ".zip";        }        try        {            string[] filenames = Directory.GetFiles(dirPath);            using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))            {                s.SetLevel(9);                byte[] buffer = new byte[4096];                foreach (string file in filenames)                {                    ZipEntry entry = new ZipEntry(Path.GetFileName(file));                    entry.DateTime = DateTime.Now;                    s.PutNextEntry(entry);                    using (FileStream fs = File.OpenRead(file))                    {                        int sourceBytes;                        do                        {                            sourceBytes = fs.Read(buffer, 0, buffer.Length);                            s.Write(buffer, 0, sourceBytes);                        } while (sourceBytes > 0);                    }                }                s.Finish();                s.Close();            }        }        catch (Exception ex)        {            err = ex.Message;            return false;        }        return true;    }