国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - c#打包文件解壓縮的實例

c#打包文件解壓縮的實例

2022-02-10 15:34淺蒼藍 C#

下面小編就為大家分享一篇c#打包文件解壓縮的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

c#打包文件解壓縮的實例

首先要引用一下類庫:using ionic.zip;這個類庫可以到網上下載。

下面對類庫使用的封裝方法:

得到指定的輸入流的zip壓縮流對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/// <summary>
      /// 得到指定的輸入流的zip壓縮流對象【原有流對象不會改變】
      /// </summary>
      /// <param name="sourcestream"></param>
      /// <returns></returns>
      public static stream zipcompress(stream sourcestream, string entryname = "zip")
      {
        memorystream compressedstream = new memorystream();
        if (sourcestream != null)
        {
          long sourceoldposition = 0;
          try
          {
            sourceoldposition = sourcestream.position;
            sourcestream.position = 0;
            using (zipfile zip = new zipfile())
            {
              zip.addentry(entryname, sourcestream);
              zip.save(compressedstream);
              compressedstream.position = 0;
            }
          }
          catch
          {
          }
          finally
          {
            try
            {
              sourcestream.position = sourceoldposition;
            }
            catch
            {
            }
          }
        }
        return compressedstream;
      }

得到指定的字節數組的zip解壓流對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/// <summary>
      /// 得到指定的字節數組的zip解壓流對象
      /// 當前方法僅適用于只有一個壓縮文件的壓縮包,即方法內只取壓縮包中的第一個壓縮文件
      /// </summary>
      /// <param name="sourcestream"></param>
      /// <returns></returns>
      public static stream zipdecompress(byte[] data)
      {
        stream decompressedstream = new memorystream();
        if (data != null)
        {
          try
          {
            memorystream datastream = new memorystream(data);
            using (zipfile zip = zipfile.read(datastream))
            {
              if (zip.entries.count > 0)
              {
                zip.entries.first().extract(decompressedstream);
                // extract方法中會操作ms,后續使用時必須先將stream位置歸零,否則會導致后續讀取不到任何數據
                // 返回該stream對象之前進行一次位置歸零動作
                decompressedstream.position = 0;
              }
            }
          }
          catch
          {
          }
        }
        return decompressedstream;
      }

壓縮zip文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/// <summary>
      /// 壓縮zip文件
      /// 支持多文件和多目錄,或是多文件和多目錄一起壓縮
      /// </summary>
      /// <param name="list">待壓縮的文件或目錄集合</param>
      /// <param name="strzipname">壓縮后的文件名</param>
      /// <param name="isdirstruct">是否按目錄結構壓縮</param>
      /// <returns>成功:true/失敗:false</returns>
      public static bool compressmulti(list<string> list, string strzipname, bool isdirstruct)
      {
        try
        {
          using (zipfile zip = new zipfile(encoding.default))//設置編碼,解決壓縮文件時中文亂碼
          {
            foreach (string path in list)
            {
              string filename = path.getfilename(path);//取目錄名稱
              //如果是目錄
              if (directory.exists(path))
              {
                if (isdirstruct)//按目錄結構壓縮
                {
                  zip.adddirectory(path, filename);
                }
                else//目錄下的文件都壓縮到zip的根目錄
                {
                  zip.adddirectory(path);
                }
              }
              if (file.exists(path))//如果是文件
              {
                zip.addfile(path,"imges");
              }
            }
            zip.save(strzipname);//壓縮
            return true;
          }
        }
        catch (exception)
        {
          return false;
        }
      }

解壓zip文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/// <summary>
      /// 解壓zip文件
      /// </summary>
      /// <param name="strzippath">待解壓的zip文件</param>
      /// <param name="strunzippath">解壓的目錄</param>
      /// <param name="overwrite">是否覆蓋</param>
      /// <returns>成功:true/失敗:false</returns>
      public static bool decompression(string strzippath, string strunzippath, bool overwrite)
      {
        try
        {
          readoptions options = new readoptions();
          options.encoding = encoding.default;//設置編碼,解決解壓文件時中文亂碼
          using (zipfile zip = zipfile.read(strzippath, options))
          {
            foreach (zipentry entry in zip)
            {
              if (string.isnullorempty(strunzippath))
              {
                strunzippath = strzippath.split('.').first();
              }
              if (overwrite)
              {
                entry.extract(strunzippath, extractexistingfileaction.overwritesilently);//解壓文件,如果已存在就覆蓋
              }
              else
              {
                entry.extract(strunzippath, extractexistingfileaction.donotoverwrite);//解壓文件,如果已存在不覆蓋
              }
            }
            return true;
          }
        }
        catch (exception)
        {
          return false;
        }
      }

c#打包文件解壓縮的實例

以上動圖由“圖斗羅”提供

這篇c#打包文件解壓縮的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/ldyblogs/archive/2017/11/21/package.html

延伸 · 閱讀

精彩推薦
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
主站蜘蛛池模板: 久久久久久久国产 | 特黄特黄的视频 | 国产黄色大片免费在线观看 | 国产精品亲子伦av一区二区三区 | 欧美日韩一区二区在线 | 日韩午夜激情视频 | 奇米亚洲午夜久久精品 | 在线视频中文字幕 | 国产高清视频一区 | 欧美日韩高清在线一区 | 亚洲视频天堂 | 日日日操 | 日韩高清一区二区 | 曰韩中文字幕 | 亚洲欧美激情精品一区二区 | 成人在线视频免费观看 | 午夜精品福利一区二区三区蜜桃 | 色视频网站在线观看 | 啵啵羞羞影院 | 夜夜久久| 欧美日韩亚洲国产 | 精品久久久久久久久久久久久久 | 中文字幕观看 | 亚洲一区精品在线 | 午夜精品久久久久久久星辰影院 | 日韩精品一级毛片 | 高清一区二区三区 | 日韩成人在线观看 | 在线观看91| 精品久久久久久久久久久久 | 日本中文字幕一区 | 99看片| 中文字幕 亚洲视频 | 免费看少妇高潮一级毛片特黄 | 一区二区在线视频 | 台湾av在线| 99成人在线视频 | 在线亚洲一区 | 国产天堂 | 久久精品国产77777蜜臀 | 日韩免费一区 |