C# ICSharpCode.SharpZipLib.Zip 的使用
生活随笔
收集整理的這篇文章主要介紹了
C# ICSharpCode.SharpZipLib.Zip 的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
public static class ZipFileHelper{#region 加壓解壓方法/// <summary> /// 功能:壓縮文件(暫時只壓縮文件夾下一級目錄中的文件,文件夾及其子級被忽略) /// </summary> /// <param name="dirPath">被壓縮的文件夾夾路徑</param> /// <param name="zipFilePath">生成壓縮文件的路徑,為空則默認與被壓縮文件夾同一級目錄,名稱為:文件夾名+.zip</param> /// <param name="err">出錯信息</param> /// <returns>是否壓縮成功</returns> public static bool ZipFile(string dirPath, string zipFilePath, out string err){err = "";if (dirPath == string.Empty){err = "要壓縮的文件夾不能為空!";return false;}if (!Directory.Exists(dirPath)){err = "要壓縮的文件夾不存在!";return false;}//壓縮文件名為空時使用文件夾名+.zip if (zipFilePath == string.Empty){if (dirPath.EndsWith("\\")){dirPath = dirPath.Substring(0, dirPath.Length - 1);}zipFilePath = dirPath + ".zip";}try{string[] filenames = Directory.GetFiles(dirPath);using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath))){s.SetLevel(9);byte[] buffer = new byte[4096];foreach (string file in filenames){ZipEntry entry = new ZipEntry(Path.GetFileName(file));entry.DateTime = DateTime.Now;s.PutNextEntry(entry);using (FileStream fs = File.OpenRead(file)){int sourceBytes;do{sourceBytes = fs.Read(buffer, 0, buffer.Length);s.Write(buffer, 0, sourceBytes);} while (sourceBytes > 0);}}s.Finish();s.Close();}}catch (Exception ex){err = ex.Message;return false;}return true;}/// <summary> /// 功能:解壓zip格式的文件。 /// </summary> /// <param name="zipFilePath">壓縮文件路徑</param> /// <param name="unZipDir">解壓文件存放路徑,為空時默認與壓縮文件同一級目錄下,跟壓縮文件同名的文件夾</param> /// <param name="err">出錯信息</param> /// <returns>解壓是否成功</returns> public static bool UnZipFile(string zipFilePath, string unZipDir, out string err){err = "";if (zipFilePath == string.Empty){err = "壓縮文件不能為空!";return false;}if (!File.Exists(zipFilePath)){err = "壓縮文件不存在!";return false;}//解壓文件夾為空時默認與壓縮文件同一級目錄下,跟壓縮文件同名的文件夾 if (unZipDir == string.Empty)unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));if (!unZipDir.EndsWith("\\"))unZipDir += "\\";if (!Directory.Exists(unZipDir))Directory.CreateDirectory(unZipDir);try{using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath))){ZipEntry theEntry;while ((theEntry = s.GetNextEntry()) != null){string directoryName = Path.GetDirectoryName(theEntry.Name);string fileName = Path.GetFileName(theEntry.Name);if (directoryName.Length > 0){Directory.CreateDirectory(unZipDir + directoryName);}if (!directoryName.EndsWith("\\"))directoryName += "\\";if (fileName != String.Empty){using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name)){int size = 2048;byte[] data = new byte[2048];while (true){size = s.Read(data, 0, data.Length);if (size > 0){streamWriter.Write(data, 0, size);}else{break;}}}}}//while }}catch (Exception ex){err = ex.Message;return false;}return true;}//解壓結束 #endregion}?
轉載于:https://www.cnblogs.com/GoCircle/p/6429848.html
總結
以上是生活随笔為你收集整理的C# ICSharpCode.SharpZipLib.Zip 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQ用变量关联input name
- 下一篇: Vim【学习笔记】