国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 壓縮和解壓文件(SharpZipLib)

2019-11-17 02:53:16
字體:
來源:轉載
供稿:網友

C# 壓縮和解壓文件(SharpZipLib)

先從網上下載ICSharpCode.SharpZipLib.dll類庫

將文件或文件夾壓縮為zip,函數如下

 1         /// <summary> 2         /// 壓縮文件 3         /// </summary> 4         /// <param name="fileName">壓縮文件路徑</param> 5         /// <param name="zipName">壓縮的文件名稱</param> 6         /// <param name="error">返回的錯誤信息</param> 7         /// <returns></returns> 8         public bool FileToZip(string fileName, string zipName, out string error) 9         {10             error = string.Empty;11             try12             {13                 ZipOutputStream s = new ZipOutputStream(File.Create(zipName));14                 s.SetLevel(6); // 0 - store only to 9 - means best comPRession15                 zip(fileName, s);16                 s.Finish();17                 s.Close();18                 return true;19             }20             catch (Exception ex)21             {22                 error = ex.Message;23                 return false;24             }25         }26 27 28         private void zip(string fileName, ZipOutputStream s)29         {30             if (fileName[fileName.Length - 1] != Path.DirectorySeparatorChar)31                 fileName += Path.DirectorySeparatorChar;32             Crc32 crc = new Crc32();33             string[] filenames = Directory.GetFileSystemEntries(fileName);34             foreach (string file in filenames)35             {36                 if (Directory.Exists(file))37                 {38                     zip(file, s);39                 }40                 else // 否則直接壓縮文件41                 {42                     //打開壓縮文件43                     FileStream fs = File.OpenRead(file);44 45                     byte[] buffer = new byte[fs.Length];46                     fs.Read(buffer, 0, buffer.Length);47                     string tempfile = Path.GetFileName(file);48                     ZipEntry entry = new ZipEntry(tempfile);49 50                     entry.DateTime = DateTime.Now;51                     entry.Size = fs.Length;52                     fs.Close();53                     crc.Reset();54                     crc.Update(buffer);55                     entry.Crc = crc.Value;56                     s.PutNextEntry(entry);57 58                     s.Write(buffer, 0, buffer.Length);59                 }60             }61         }

將zip解壓為文件或文件夾,函數代碼如下

 1         /// <summary> 2         /// 解壓文件 3         /// </summary> 4         /// <param name="zipName">解壓文件路徑</param> 5         /// <param name="fileDirName">解壓到文件夾的名稱</param> 6         /// <param name="error">返回的錯誤信息</param> 7         /// <returns></returns> 8         public bool ZipToFile(string zipName, string fileDirName, out string error) 9         {10             try11             {12                 error = string.Empty;13                 //讀取壓縮文件(zip文件),準備解壓縮14                 ZipInputStream s = new ZipInputStream(File.Open(zipName.Trim(), FileMode.Open, Fileaccess.Read));15                 ZipEntry theEntry;16 17                 string rootDir = " ";18                 while ((theEntry = s.GetNextEntry()) != null)19                 {20                     string path = fileDirName;21                     //獲取該文件在zip中目錄22                     rootDir = Path.GetDirectoryName(theEntry.Name);23                     //獲取文件名稱24                     string fileName = Path.GetFileName(theEntry.Name);25                     if (string.IsNullOrEmpty(fileName))26                         continue;27                     //判斷是否為頂層文件,是,將文件直接放在fileDirName下,否,創建目錄28                     if (string.IsNullOrEmpty(rootDir))29                     {30                         if (!Directory.Exists(path))31                             Directory.CreateDirectory(path);32                     }33                     else34                     {35                         path += "http://" + rootDir;36                         if (!Directory.Exists(path))37                             Directory.CreateDirectory(path);38                     }39 40                     //將文件流寫入對應目錄下的文件中41                     if (fileName != String.Empty)42                     {43                         FileStream streamWriter = File.Create(path + "http://" + fileName);44 45                         int size = 2048;46                         byte[] data = new byte[2048];47                         while (true)48                         {49                             if (theEntry.Size == 0)50                                 break;51 52                             size = s.Read(data, 0, data.Length);53                             if (size > 0)54                             {55                                 streamWriter.Write(data, 0, size);56                             }57                             else58                             {59                                 break;60                             }61                         }62                         streamWriter.Close();63                     }64                 }65                 s.Close();66                 return true;67             }68             catch (Exception ex)69             {70                 error = ex.Message;71                 return false;72             }73         }

調用示例

1 string error;2             if (FileToZip(@"E:/文檔", "文檔.zip", out error))3                 MessageBox.Show("Succee");4             else5                 MessageBox.Show(error);
壓縮示例
1 string error;2             if (ZipToFile(@"E:/文檔.zip", "文檔", out error))3                 MessageBox.Show("Succee");4             else5                 MessageBox.Show(error);
解壓示例


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 原阳县| 肥城市| 治县。| 桑日县| 玉环县| 方山县| 沙坪坝区| 简阳市| 万宁市| 南部县| 资中县| 成武县| 逊克县| 集安市| 大埔区| 梅州市| 宜兴市| 承德县| 盐边县| 治县。| 祥云县| 来安县| 新宁县| 读书| 武穴市| 海晏县| 饶河县| 和平县| 达州市| 沅陵县| 曲麻莱县| 扎鲁特旗| 宕昌县| 保亭| 连南| 商南县| 广昌县| 综艺| 南城县| 河北省| 韩城市|