利用c#自帶的類對文件進行壓縮和解壓處理


  在做網絡傳輸文件的小例子的時候,當傳輸的文件比較大的時候,我們通常都是將文件經過壓縮之后才進行傳輸,以前都是利用第三方插件來對文件進行壓縮的,但是現在我發現了c#自帶的類庫也能夠實現文件的壓縮,實際上是對數據的壓縮吧,為什么說是對具體的數據經行壓縮了,請看下面實現壓縮的代碼吧。

 

注意在用c#自帶的類庫實現文件壓縮和解壓的時候需要添加下面的引用:

using System.IO.Compression;
using System.IO;

壓縮文件的代碼如下:

        /// <summary>
        ///壓縮文件
        /// </summary>
        /// <param name="filePath">需要被壓縮文件的路徑</param>
        private void FileCompression(string filePath)
        {
            StreamReader sr = new StreamReader(filePath);
            //讀取出文件中的內容來。
            string data=sr.ReadToEnd();
            //壓縮文件的后綴名可以隨意起。
            FileStream filedata = new FileStream("myCompression.mZP", FileMode.Create, FileAccess.Write);
            GZipStream zip = new GZipStream(filedata, CompressionMode.Compress);
            StreamWriter sw = new StreamWriter(zip);
            //將文件的內容寫入到壓縮的流當中
            sw.Write(data);
            zip.Close();
            sr.Close();
            filedata.Close();
            //關閉流一定要按照流的順序來,否則會出現異常:無法訪問已關閉的文件。
           // zip.Close();
           
        }    

然后實現解壓的代碼與上面類似

解壓文件的代碼如下:

 

        private void fileDeCompression()
        {
            //將以壓縮的文件變為一個文件流
            FileStream fileCompression = File.OpenRead("myCompression.mZP");
            GZipStream gzp = new GZipStream(fileCompression, CompressionMode.Decompress);

            StreamReader sr = new StreamReader(gzp);
            //讀取出解壓后的數據
            string data = sr.ReadToEnd();
            MessageBox.Show(data);
            gzp.Close();
            fileCompression.Close();
            sr.Close();
        }

 

 

 

通過使用上面的兩個方法即可實現對文件或者是數據的壓縮和解壓。

使用自帶的類也會存在一些缺點:無法對文件夾經行壓縮。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM