将DotNetZip内存流转换为字符串

时间:2017-10-03 18:27:15

标签: c# streamreader memorystream stringstream dotnetzip

我正在尝试读取zip中的文件,以检查该文件中是否包含某个字符串。但我似乎可以将“文件”(内存流)转换为字符串以便搜索它。

当我使用下面的代码“stringOfStream”总是空白时,我做错了什么?读者总是有一个长度,读取字节返回不同的数字。

        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();
            }

        }

由于

1 个答案:

答案 0 :(得分:2)

我认为当你调用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();
            }

  }

检查它是否有效。

相关问题