using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.IO.Packaging;namespace PolicyUpload.Util{ class testGzip { public string SourceFolderPath{get;set;} public testGzip(string sourceFolderPath) { SourceFolderPath = sourceFolderPath; } public void ZipFolder(string zipFilePath) { using (Package package = Package.Open(zipFilePath, FileMode.Create)) { DirectoryInfo di = new DirectoryInfo(SourceFolderPath); ZipDirectory(di,package); } } private void ZipDirectory(DirectoryInfo di, Package package) { foreach (FileInfo fi in di.GetFiles()) { string relativePath = fi.FullName.Replace(SourceFolderPath, String.Empty); relativePath = relativePath.Replace("\\","/"); PackagePart part = package.CreatePart(new Uri(relativePath,UriKind.Relative),System.Net.Mime.MediaTypeNames.Application.Zip); using (FileStream fs = fi.OpenRead()) { CopyStream(fs, part.GetStream()); } } foreach (DirectoryInfo subDi in di.GetDirectories()) { ZipDirectory(di, package); } } private void CopyStream(Stream scource,Stream target) { const int bufSize = 0x1000; byte[] buf = new byte[bufSize]; int byteRead = 0; while ((byteRead = scource.Read(buf,0,bufSize)) > 0 ) { target.Write(buf, 0, byteRead); } } }}