c# 6 读取 zip 文件内容到内存里的方法。

网上的很多示例代码都是写入文件的,自己改造了一个例子。
主要奇怪的地方是 ZipArchiveEntry open出来的stream,直接用 read 读到buff里的数据不是解压后的数据。需要有一个中介的stream流来处理。

// See https://aka.ms/new-console-template for more information
using System.IO.Compression;

var zipA = ZipFile.Open(@"R:\111.zip", ZipArchiveMode.Read);
foreach(var entity in zipA.Entries)
{
    Console.WriteLine(entity.FullName);
    Console.WriteLine($"{entity.Length}/{entity.CompressedLength}");

    var stream = entity.Open();

    var buff = new  byte[entity.Length];

    var ms = new MemoryStream();
    stream.CopyTo(ms);

    ms.Position = 0;
    ms.Read(buff, 0, buff.Length);

    // stream.Read(buff, 0, buff.Length); 直接对stream 读取buff,实际上应该是读到压缩后的buff内容

    var fileName = @"r:\" + entity.Name;
    File.WriteAllBytes(@"r:\z" + entity.Name, buff);

    // entity.ExtractToFile(fileName, true);
}
«   2023年9月   »
123
45678910
11121314151617
18192021222324
252627282930
网站分类
文章归档

Powered By Z-BlogPHP 1.6.5 Valyria

Copyright csharptools.cn Rights Reserved. 桂ICP备17007292号-1