zoukankan      html  css  js  c++  java
  • c# 壓縮與解壓的簡單學習

             System.IO.Compression命名空間包含能壓縮代碼中文件的類,這些類使用GZIP或Deflate算法,這兩種算法都是公開的、免費的。
             System.IO.Compression命名空單中有兩個奪縮流類DeflateStream和GZipStream。
    以GZipStream為例,用代碼來學習。
    using System.IO.Compression;
    using System.IO;

    namespace MyZip
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();

                btnCompressed.Click 
    += new EventHandler(btnCompressed_Click);
                btnUnCompressed.Click 
    += new EventHandler(btnUnCompressed_Click);
            }


            
    /// <summary>
            
    /// 壓縮文件
            
    /// </summary>
            
    /// <param name="asSouceFile">被壓縮的文件的完整路徑</param>
            
    /// <param name="asZipFileName">被解壓文件的完整路徑</param>
            private void SaveCompressdFile(string asSouceFile, string asZipFileName)
            {
                
    string sData = ReadFile(asSouceFile);
                FileStream fsStream 
    = new FileStream(asZipFileName, FileMode.Create, FileAccess.Write);
                
    //壓縮
                GZipStream gzStream = new GZipStream(fsStream, CompressionMode.Compress);
                StreamWriter swWriter 
    = new StreamWriter(gzStream);
                swWriter.Write(sData);
                swWriter.Close();
            }

            
    /// <summary>
            
    /// 解壓文件
            
    /// </summary>
            
    /// <param name="asZipFileName">被解壓文件的完整路徑</param>
            
    /// <param name="asUnZipFileName">解壓後文件的完整路徑</param>
            private void LoadCompressdFile(string asZipFileName,string asUnZipFileName)
            {
                FileStream fsStream 
    = new FileStream(asZipFileName, FileMode.Open, FileAccess.Read);
                
    //解壓縮
                GZipStream gzStream = new GZipStream(fsStream, CompressionMode.Decompress);
                StreamReader srReader 
    = new StreamReader(gzStream);
                
    string sData= srReader.ReadToEnd();
                srReader.Close();
                WriteFile(asUnZipFileName, sData);
            }

            
    /// <summary>
            
    /// 讀取文件
            
    /// </summary>
            
    /// <param name="asSouceFile">被讀取文件的完整路徑</param>
            
    /// <returns></returns>
            private string ReadFile(string asSouceFileName)
            {
                
    string sValue="";
                
    try
                {
                    FileStream fsStream 
    = new FileStream(asSouceFileName, FileMode.Open, FileAccess.Read);
                    StreamReader srReader 
    = new StreamReader(asSouceFileName);
                    sValue 
    = srReader.ReadToEnd();
                    srReader.Close();
                }
                
    catch (Exception ex)
                {
                    
    throw ex;
                }
                
    return sValue;
            }

         
            
    /// <summary>
            
    /// 寫入文件
            
    /// </summary>
            
    /// <param name="asFileName">寫入後文件的完整路徑</param>
            
    /// <param name="asData">被寫入的資料</param>
            
    /// <returns></returns>
            private void WriteFile(string asFileName,string asData)
            {
                FileStream fsStream 
    = new FileStream(asFileName, FileMode.OpenOrCreate, FileAccess.Write);
                StreamWriter swWriter 
    = new StreamWriter(fsStream);
                swWriter.Write(asData);
                swWriter.Close();
            }
            
    /// <summary>
            
    /// 壓縮按鈕事件的方法
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            void btnCompressed_Click(object sender, EventArgs e)
            {
                SaveCompressdFile(
    @"D:\log.txt"@"D:\zip.txt");
            }

            
    /// <summary>
            
    /// 解壓縮壓按鈕事件的方法
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            void btnUnCompressed_Click(object sender, EventArgs e)
            {
                LoadCompressdFile(
    @"D:\zip.txt"@"D:\unzip.txt");
            }

        }
    }
  • 相关阅读:
    hive实现根据用户分组,按用户记录求上下两条记录的时间差
    国外互联网公司大数据技术架构研究
    Hadoop源码解析之 rpc通信 client到server通信
    一致性哈希与java实现
    spark 对hbase 操作
    Spark MLlib(下)--机器学习库SparkMLlib实战
    PHP源码进行加密(仅linux)
    有个问题需要将字符串(大数字)计算相加并转换成字符串,传递的参数是字符串。
    Js中Array 函数使用方法
    phpstorm配置xdebug调试
  • 原文地址:https://www.cnblogs.com/scottckt/p/1233713.html
Copyright © 2011-2022 走看看