亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

基于C# 生成Zip壓縮包代碼

2020-01-24 01:13:06
字體:
來源:轉載
供稿:網友

壓縮包制作也是很多項目中需要用到的功能。比如有大量的文件(假設有10000個)需要上傳,1個1個的上傳似乎不太靠譜(靠,那得傳到什么時候???),這時我們可以制作一個壓縮包zip,直接傳這個文件到服務器端,然后在服務器目錄解壓,釋放里面的文件。

這里我們選用ICSharpCode.SharpZipLib這個類庫來實現我們的需求。

ICSharpCode.SharpZipLib提供了兩個壓縮算法的實現,分別是BZIP2(壓縮時間長,壓縮率高)和GZIP(壓縮效率高,壓縮率低)。

先定義一個枚舉,用于程序標示是哪個壓縮算法。

/// <summary>/// 壓縮枚舉/// </summary>public enum ZipEnum{//壓縮時間長,壓縮率高BZIP,//壓縮效率高,壓縮率低GZIP}

單個文件的壓縮:

#region 制作壓縮包(單個文件壓縮)/// <summary>/// 制作壓縮包(單個文件壓縮)/// </summary>/// <param name="sourceFileName">原文件</param>/// <param name="zipFileName">壓縮文件</param>/// <param name="zipEnum">壓縮算法枚舉</param>/// <returns>壓縮成功標志</returns>public static bool ZipFile(string srcFileName, string zipFileName, ZipEnum zipEnum){bool flag = true;try{switch (zipEnum){case ZipEnum.BZIP:FileStream inStream = File.OpenRead(srcFileName);FileStream outStream = File.Open(zipFileName, FileMode.Create);//參數true表示壓縮完成后,inStream和outStream連接都釋放BZip.Compress(inStream, outStream, true, );inStream.Close();outStream.Close();break;case ZipEnum.GZIP:FileStream srcFile = File.OpenRead(srcFileName);GZipOutputStream zipFile = newGZipOutputStream(File.Open(zipFileName, FileMode.Create));byte[] fileData = new byte[srcFile.Length];srcFile.Read(fileData, , (int)srcFile.Length);zipFile.Write(fileData, , fileData.Length);srcFile.Close();zipFile.Close();break;default: break;}}catch{flag = false;}return flag;}
#endregion

單個文件的解壓縮:

#region 解壓縮包(單個文件解壓縮)/// <summary>/// 解壓縮包(單個文件解壓縮)/// </summary>/// <param name="zipFileName">壓縮文件</param>/// <param name="unzipFileName">解壓縮文件</param>/// <param name="zipEnum">壓縮算法枚舉</param>/// <returns>壓縮成功標志</returns>public static bool UnZipFile(string zipFileName, stringunzipFileName, ZipEnum zipEnum){bool flag = true;try{switch (zipEnum){case ZipEnum.BZIP:FileStream inStream = File.OpenRead(zipFileName);FileStream outStream = File.Open(unzipFileName, FileMode.Create);BZip.Decompress(inStream, outStream, true);break;case ZipEnum.GZIP:GZipInputStream zipFile = newGZipInputStream(File.OpenRead(zipFileName));FileStream destFile = File.Open(unzipFileName, FileMode.Create);int bufferSize = * ;byte[] fileData = new byte[bufferSize];while (bufferSize > ){bufferSize = zipFile.Read(fileData, , bufferSize);zipFile.Write(fileData, , bufferSize);}destFile.Close();zipFile.Close();break;default: break;}}catch{flag = false;}return flag;}#endregion

上面的兩個方法在引用了dll后,可以直接使用。

看到這里,相信讀者有疑問了,如果我想讓多個文件壓縮到1個zip包里呢?甚至可以給文件加密?給zip包加注釋?

好吧,我這里繼續貼兩個方法,都經過測試,可用。

制作壓縮包:

#region 制作壓縮包(多個文件壓縮到一個壓縮包,支持加密、注釋)/// <summary>/// 制作壓縮包(多個文件壓縮到一個壓縮包,支持加密、注釋)/// </summary>/// <param name="topDirectoryName">壓縮文件目錄</param>/// <param name="zipedFileName">壓縮包文件名</param>/// <param name="compresssionLevel">壓縮級別 -</param>/// <param name="password">密碼</param>/// <param name="comment">注釋</param>public static void ZipFiles(string topDirectoryName, string zipedFileName, intcompresssionLevel, string password, string comment){using (ZipOutputStream zos = newZipOutputStream(File.Open(zipedFileName, FileMode.OpenOrCreate))){if (compresssionLevel != ){zos.SetLevel(compresssionLevel);//設置壓縮級別}if (!string.IsNullOrEmpty(password)){zos.Password = password;//設置zip包加密密碼}if (!string.IsNullOrEmpty(comment)){zos.SetComment(comment);//設置zip包的注釋}//循環設置目錄下所有的*.jpg文件(支持子目錄搜索)foreach (string file inDirectory.GetFiles(topDirectoryName, "*.jpg", SearchOption.AllDirectories)){if (File.Exists(file)){FileInfo item = new FileInfo(file);FileStream fs = File.OpenRead(item.FullName);byte[] buffer = new byte[fs.Length];fs.Read(buffer, , buffer.Length);ZipEntry entry = new ZipEntry(item.Name);zos.PutNextEntry(entry);zos.Write(buffer, , buffer.Length);}}}}#endregion

解壓縮包:

#region 解壓縮包(將壓縮包解壓到指定目錄)/// <summary>/// 解壓縮包(將壓縮包解壓到指定目錄)/// </summary>/// <param name="zipedFileName">壓縮包名稱</param>/// <param name="unZipDirectory">解壓縮目錄</param>/// <param name="password">密碼</param>public static void UnZipFiles(string zipedFileName, string unZipDirectory, stringpassword){using (ZipInputStream zis = newZipInputStream(File.Open(zipedFileName, FileMode.OpenOrCreate))){if (!string.IsNullOrEmpty(password)){zis.Password = password;//有加密文件的,可以設置密碼解壓}ZipEntry zipEntry;while ((zipEntry = zis.GetNextEntry()) != null){string directoryName = Path.GetDirectoryName(unZipDirectory);string pathName = Path.GetDirectoryName(zipEntry.Name);string fileName = Path.GetFileName(zipEntry.Name);pathName = pathName.Replace(".", "$");directoryName += "http://" + pathName;if (!Directory.Exists(directoryName)){Directory.CreateDirectory(directoryName);}if (!string.IsNullOrEmpty(fileName)){FileStream fs = File.Create(Path.Combine(directoryName, fileName));int size = ;byte[] bytes = new byte[];while (true){size = zis.Read(bytes, , bytes.Length);if (size > ){fs.Write(bytes, , size);}else{break;}}fs.Close();}}}}#endregion

調用時我們可以這么寫:

ZipFileUtil.ZipFiles(@"E://test//", "E://test.zip", 1, "admin", "this is admin's comment.");//制作壓縮包 ZipFileUtil.UnZipFiles("E://test.zip", "E://guwei4037//", "admin");//解壓縮包

以上內容是基于C# 生成Zip壓縮包代碼的相關介紹,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文字幕视频| 8050国产精品久久久久久| 这里只有精品久久| 亚洲欧美一区二区精品久久久| 欧美亚洲另类激情另类| 久久久女人电视剧免费播放下载| 国产日韩欧美自拍| 国产亚洲精品日韩| 欧美日韩成人精品| 中文日韩在线观看| 国产欧美最新羞羞视频在线观看| 国产精品成人va在线观看| 91精品国产91久久久| 亚洲欧美日韩精品久久奇米色影视| 欧美精品成人91久久久久久久| 日韩禁在线播放| 在线亚洲男人天堂| 欧美日韩精品在线播放| 亚洲天堂免费在线| 国产精品久久久久久久久久东京| 欧美激情一二三| 亚洲国产成人精品久久| 国产欧美日韩专区发布| 亚洲国产精品视频在线观看| 亚洲摸下面视频| 热re91久久精品国99热蜜臀| 亚洲性生活视频在线观看| 一区二区三区视频观看| 成人在线视频福利| 国产精品久久久久久久久| 亚洲欧美日韩中文在线制服| 中文综合在线观看| 奇米成人av国产一区二区三区| 欧美日本中文字幕| 国产精品免费一区| 欧美激情一区二区三区久久久| 亚洲一区二区三区成人在线视频精品| 亚洲国产美女精品久久久久∴| 91精品综合视频| 一区二区欧美日韩视频| 综合国产在线观看| 亚洲综合在线播放| www.xxxx精品| 日韩精品欧美国产精品忘忧草| 精品视频在线播放| 亚洲视频电影图片偷拍一区| 欧美电影在线观看网站| 韩国国内大量揄拍精品视频| 久久成人这里只有精品| 亚洲色图国产精品| 91久久久亚洲精品| 精品中文字幕久久久久久| 欧美激情综合色| 26uuu久久噜噜噜噜| 国产午夜精品一区二区三区| 北条麻妃在线一区二区| 青草青草久热精品视频在线观看| 国产视频久久久久久久| 国产精品视频白浆免费视频| 成人两性免费视频| 国产精品久久久久高潮| 福利微拍一区二区| 原创国产精品91| 3344国产精品免费看| 中文字幕亚洲图片| 这里只有精品在线观看| 九九热精品在线| 黄色精品在线看| 亚洲最大福利视频| 少妇精69xxtheporn| 国产精品久久999| 亚洲丝袜在线视频| 国产精品自产拍高潮在线观看| 永久免费毛片在线播放不卡| 亚洲欧美日本精品| 俺也去精品视频在线观看| 国产有码一区二区| 久久久综合av| 亚洲第一福利在线观看| 欧美成人黄色小视频| 日韩国产中文字幕| 中文欧美在线视频| 成人欧美一区二区三区黑人孕妇| 精品在线小视频| 久久91精品国产| 亚洲r级在线观看| 欧美日韩第一页| 日日噜噜噜夜夜爽亚洲精品| 成人免费直播live| 久久久久国产精品免费| 国产精品私拍pans大尺度在线| 久久视频国产精品免费视频在线| 在线播放精品一区二区三区| 欧美日韩裸体免费视频| 久久久人成影片一区二区三区| 国产日韩在线亚洲字幕中文| 日韩女在线观看| 日产精品久久久一区二区福利| 国产精品女主播| 久久精品99久久久香蕉| 亚洲人成欧美中文字幕| 欧美性极品xxxx做受| 亚洲欧美制服另类日韩| 九九九热精品免费视频观看网站| 尤物yw午夜国产精品视频明星| 国产成人av网| 亚洲福利视频在线| 欧洲亚洲在线视频| 精品国产欧美成人夜夜嗨| 91精品国产色综合久久不卡98| 日韩精品视频免费在线观看| 欧美大胆a视频| 中文字幕av日韩| 国产精品亚洲自拍| 国产精品久久久久久亚洲影视| 亚洲免费视频在线观看| x99av成人免费| 亚洲日本成人女熟在线观看| 日韩午夜在线视频| 欧美日韩中文字幕综合视频| 一本一本久久a久久精品牛牛影视| 97香蕉超级碰碰久久免费软件| 在线视频日本亚洲性| xxxx欧美18另类的高清| 成人激情视频免费在线| 亚洲аv电影天堂网| 欧美怡红院视频一区二区三区| 国产精品人人做人人爽| 精品激情国产视频| 欧美激情视频网站| 国产一级揄自揄精品视频| 欧美一级高清免费播放| 亚洲欧美在线一区| 亚洲色图美腿丝袜| 成人黄色片网站| 国产色视频一区| 国产精品视频在线播放| 性欧美xxxx| 欧美一级淫片播放口| 久久久免费av| 这里精品视频免费| 日本亚洲精品在线观看| 中文字幕av日韩| 国产精品久久久亚洲| 日韩精品视频在线免费观看| 91国内精品久久| 成人午夜小视频| 国内精品久久久| 成人亚洲激情网| 在线视频日本亚洲性| 欧美性猛交xxxx| 97久久超碰福利国产精品…| 8x拔播拔播x8国产精品| 在线播放日韩av| 久久高清视频免费| 亚洲精品www久久久久久广东| 国产在线观看精品一区二区三区| 亚洲性生活视频| 亚洲欧洲xxxx| 欧美日韩亚洲高清| 欧美激情手机在线视频| 伊是香蕉大人久久| 久久精品国产69国产精品亚洲| 国产成人精品优优av|