将 DotNetZip 内存流转换为字符串

Converting DotNetZip memory stream to string

我正在尝试读取 zip 中的文件以检查该文件中是否包含特定字符串。但是我似乎可以将 "file" (内存流)变成一个字符串以便搜索它。

当我使用下面的代码时"stringOfStream"总是空白,我做错了什么? reader总是有一个长度和读取字节returns不同的数字。

        using (ZipFile zip = ZipFile.Read(currentFile.FullName))
        {
            ZipEntry e = zip[this.searchFile.Text];

            using (MemoryStream reader = new MemoryStream())
            {
                e.Extract(reader);
                var stringReader = new StreamReader(reader);
                var stringOfStream = stringReader.ReadToEnd();
            }

        }

谢谢

我想当你调用Extract时,流的位置会到达文件的末尾,所以你需要重新定位才能获取数据。

你能试试这个吗:

 using (ZipFile zip = ZipFile.Read(currentFile.FullName))
 {
            ZipEntry e = zip[this.searchFile.Text];

            using (MemoryStream reader = new MemoryStream())
            {
                e.Extract(reader);
                reader.Position = 0;
                var stringReader = new StreamReader(reader);
                var stringOfStream = stringReader.ReadToEnd();
            }

  }

检查它是否有效。