SharpZipLib 庫
SharpZipLib 是一個開源的基於 .NET 平台的壓縮、解壓縮類庫。特點是經過長期的開發和使用現在已經變得非常的穩定,可以放心的應用到產品中。
在 .NET 平台上,要操作壓縮文件的話您的第一選擇一定是 SharpZip;
實踐
byte[] buffer = new byte[1024 * 1024 * 5]; using (MemoryStream st = new MemoryStream())//MemoryStream為內存流 { //ZipOutputStream類的構造函數需要一個流,文件流、內存流都可以,壓縮后的內容會寫入到這個流中。 using (ZipOutputStream zipStream = new ZipOutputStream(st)) { string str = CommonHelper.HttpGetFile(uri);//此處為下載的文件轉換成了字符串 if (!string.IsNullOrEmpty(str)) { byte[] bytes = Encoding.UTF8.GetBytes(str); ZipEntry zipEntry = new ZipEntry("xxx.doc"); zipEntry.DateTime = DateTime.Now; zipEntry.IsUnicodeText = true; zipStream.PutNextEntry(zipEntry); zipStream.Write(bytes, 0, bytes.Length); zipStream.CloseEntry(); } //獲取excel字節並添加到壓縮文件 buffer = ExcelHelper<T>.OutputExcel();//此處為獲取的的excel字節 ZipEntry zipEntry2 = new ZipEntry("xxxx.xls"); zipEntry2.DateTime = DateTime.Now; zipEntry2.IsUnicodeText = true;//解決文件名亂碼 zipStream.PutNextEntry(zipEntry2); zipStream.Write(buffer, 0, buffer.Length); zipStream.CloseEntry(); //使用流操作時一定要設置IsStreamOwner為false。否則很容易發生在文件流關閉后的異常。 zipStream.IsStreamOwner = false; zipStream.Finish(); zipStream.Close(); } buffer = st.GetBuffer(); st.Close(); }
歡迎指錯!