<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      記一次使用SevenZip發生的Bug

      最近寫程序有一個需求,就是解壓ZIP,然后把文件壓縮成7Z,由于不希望產生IO操作,以及解壓成文件打包完以后又刪除文件這一套操作太過于繁瑣,所以打算全程都用流進行。

      解壓操作相對簡單

      var FILE = new Dictionary<string, Stream>();
      using (ZipArchive archive = new ZipArchive(File.OpenRead(@"Y:\SystemBackup\JD02 11# 中腳.zip"), ZipArchiveMode.Read))
      {
             foreach (var item in archive.Entries)
          {
            var Mem = new MemoryStream();
            item.Open().CopyTo(Mem);
            FILE.Add(item.FullName, Mem);
          }
       }

      使用上述代碼就能將壓縮包內的文件解壓成內存流,保存到Dictionary里面。

      然后調用SevenZip庫壓縮成7Z也相對簡單

      using (var SaveF = new FileStream("1.7z", FileMode.Create, FileAccess.Write))
      {
          var compressor = new SevenZipCompressor
          {
              ArchiveFormat = OutArchiveFormat.SevenZip,
              CompressionLevel = SevenZip.CompressionLevel.Ultra,
          };
      compressor.CompressStreamDictionary(FILE, SaveF);
      }

      這樣存在Dictionary流就能全部壓縮到1.7z里面,然后一頓操作猛如虎,結果一看二八五。

       

       

       壓縮進去的文件大小全都是0,

      然后經過不懈的Debug后,終于意識到一個問題,

       

       

       內存的流的指向位置指向的是末尾,這樣如果SevenZip庫讀取流的方式是使用ReadByte()的話,那勢必是從讀取的是最后一個字節,難怪大小是0;

                  using (ZipArchive archive = new ZipArchive(File.OpenRead(@"Y:\SystemBackup\JD02 11# 中腳.zip"), ZipArchiveMode.Read))
                  {
                      using (var SaveF = new FileStream("1.7z", FileMode.Create, FileAccess.Write))
                      {
                          var FILE = new Dictionary<string, Stream>();
                          var compressor = new SevenZipCompressor
                          {
                              ArchiveFormat = OutArchiveFormat.SevenZip,
                              CompressionLevel = SevenZip.CompressionLevel.Ultra,
                          };
                          foreach (var item in archive.Entries)
                          {
                              var Mem = new MemoryStream();
                              item.Open().CopyTo(Mem);
                              Mem.Position = 0;
                              FILE.Add(item.FullName, Mem);
                          }
                          compressor.CompressStreamDictionary(FILE, SaveF);
      
                      }
                  }

      在此警示自己,不管如果,在操作流之前,最好先手動把流的指向指到開頭位置。

      那么解決方法就很簡單了

       

       

       解壓完以后,把內存流指向流的開頭就行。

      以下是代碼

       

      posted @ 2020-07-15 10:34  0Emil0  閱讀(463)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 激情综合五月| 美女裸体黄网站18禁止免费下载| 南宁市| 精品久久久久久成人AV| 国产偷窥熟女高潮精品视频| jk白丝喷浆| 免费特黄夫妻生活片| 蜜桃av多人一区二区三区| 久久久久国色av免费观看性色| 国产av一区二区不卡| 综合区一区二区三区狠狠| 一区二区三区国产不卡| 亚洲日本韩国欧美云霸高清| 久久夜色撩人国产综合av| 久久精品亚洲日本波多野结衣| 久久月本道色综合久久| 国产女人18毛片水真多1| 黑人欧美一级在线视频| 99久久无码一区人妻a黑| 国产成人麻豆亚洲综合无码精品| 九九热视频免费在线播放| 欧美牲交a欧美牲交aⅴ一| 少妇爽到呻吟的视频| 国产特级毛片aaaaaa毛片| 国产精品一区二区小视频| 欧美性猛交xxxx乱大交极品| 黄色亚洲一区二区在线观看| 精品亚洲女同一区二区| 日韩一区在线中文字幕| 久久久久青草线综合超碰| 国产69成人精品视频免费| 国产av一区二区不卡| 免费av深夜在线观看| 国产v综合v亚洲欧美大天堂| A毛片毛片看免费| 比如县| 国产一区日韩二区三区| 亚洲日本欧美日韩中文字幕| 亚洲国产性夜夜综合| 国产精品自在线拍国产| 青青青爽在线视频观看|