C# 创建和更新zipfile

C# 创建和更新zipfile,c#,sharpziplib,C#,Sharpziplib,在完成文档之后,我很难让它正常工作。使用ZipFile我想在内存中创建一个zip文件,然后能够更新它。在每次连续调用更新时,zip都会报告它有0个条目 我做错了什么 public void AddFile(MemoryStream zipStream, Stream file, string fileName) { //First call to this zipStream is just an empty stream var zip = Zi

在完成文档之后,我很难让它正常工作。使用
ZipFile
我想在内存中创建一个zip文件,然后能够更新它。在每次连续调用更新时,zip都会报告它有0个条目

我做错了什么

    public void AddFile(MemoryStream zipStream, Stream file, string fileName)
    {
        //First call to this zipStream is just an empty stream
        var zip = ZipFile.Create(zipStream);

        zip.BeginUpdate();
        zip.Add(new ZipDataSource(file), fileName);
        zip.CommitUpdate();
        zip.IsStreamOwner = false;
        zip.Close();

        zipStream.Position = 0;
    }

    public Stream GetFile(Stream zipStream, string pathAndName)
    {
        var zip = ZipFile.Create(zipStream);
        zip.IsStreamOwner = false;

        foreach (ZipEntry hi in zip) //count is 0
        {

        }
        var entry = zip.GetEntry(pathAndName);

        return entry == null ? null : zip.GetInputStream(entry);
    }
自定义数据源

        public class ZipDataSource : IStaticDataSource
        {
        private Stream _stream;

        public ZipDataSource(Stream stream)
        {
            _stream = stream;
        }

        public Stream GetSource()
        {
            _stream.Position = 0;
            return _stream;
        }
ZipFile.Create(zipStream)
并不像任何人想象的那样只是一个方便的静态访问器。如果你打算使用它,只在你第一次创建一个zip时使用它。打开现有zip时,您需要使用
var zip=new ZipFile(zipStream)

我个人在过去对这个库有很多问题,我建议任何寻找一个好的zip库的人选择icsharpziplib以外的东西。。。API简直糟透了