.net 文件压缩和解压

来源:互联网 发布:windows 自动修复硬盘 编辑:程序博客网 时间:2024/05/01 17:00
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Text;using System.IO;using System.Diagnostics;using System.IO.Compression;namespace WebDemo{    public partial class FileCompAndDecomp : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (RequestType())            {                string Message = string.Empty;                string HDCommand = Request["HDCommand"].ToString();                switch (HDCommand)                {                    case "FileComp"://压缩                        Message = CompressFile(Server.MapPath("yangfeizai/Temp.doc"), Server.MapPath("yangfeizai/Test.rar"));                        break;                    case "FileDeComp"://解压                        Message = DecompressFile(Server.MapPath("yangfeizai/Test.rar"), Server.MapPath("yangfeizai/Result.doc"));                        break;                    default:                        break;                }                Response.Write("<script>alert('" + Message + "')</script>");            }        }        #region //判断页面提交方式POST/GET        public bool RequestType()        {            if (HttpContext.Current.Request.RequestType == "POST")                return true;            else                return false;        }        #endregion        #region //文件压缩        public string CompressFile(string iFile, string oFile)          {            string message = string.Empty;            //判断文件是否存在                  if (!File.Exists(iFile))                return "压缩文件未找到!";            //创建文件流                   byte[] buffer = null;               FileStream iStream = null;              FileStream oStream = null;               GZipStream cStream = null;            try            {                //把文件写进数组                     iStream = new FileStream(iFile, FileMode.Open, FileAccess.Read, FileShare.None);                buffer = new byte[iStream.Length];                int num = iStream.Read(buffer, 0, buffer.Length);                if (num != buffer.Length)                    return "压缩文件出现异常!";                //创建文件输出流并输出                    oStream = new FileStream(oFile, FileMode.Create, FileAccess.Write,FileShare.None);                cStream = new GZipStream(oStream, CompressionMode.Compress, true);                cStream.Write(buffer, 0, buffer.Length);                message = "压缩成功!";            }            catch (ApplicationException ex)            {                message=ex.Message;            }                      finally                    {                               //关闭流对象                        if (iStream != null) iStream.Close();                     if (cStream != null) cStream.Close();                      if (oStream != null) oStream.Close();               }            return message;        }        #endregion        #region //文件解压        public string DecompressFile(string iFile, string oFile)              {            string message = string.Empty;            //判断文件是否存在                     if (!File.Exists(iFile))                return "解压文件为找到!";                        //创建文件流                       FileStream iStream = null;                 FileStream oStream = null;                    GZipStream dStream = null;            byte[] qBuffer = new byte[0x10000];            try            {                //把压缩文件写入数组                       iStream = new FileStream(iFile, FileMode.Open, FileAccess.Read, FileShare.None);                dStream = new GZipStream(iStream, CompressionMode.Decompress, true);                //创建输出流并输出                    oStream = new FileStream(oFile, FileMode.Create, FileAccess.Write, FileShare.None);                int bytesRead = dStream.Read(qBuffer, 0, qBuffer.Length);                while (bytesRead > 0)                {                    oStream.Write(qBuffer, 0, bytesRead);                    bytesRead = dStream.Read(qBuffer, 0, qBuffer.Length);                }                oStream.Flush();                message = "解压成功!";            }            catch (ApplicationException ex)            {                message = ex.Message;            }                      finally                        {                              //关闭流对象                        if (iStream != null) iStream.Close();                     if (dStream != null) dStream.Close();                    if (oStream != null) oStream.Close();                }            return message;        }        #endregion    }}
原创粉丝点击