C# 将DotNetZip内存流转换为字符串

C# 将DotNetZip内存流转换为字符串,c#,streamreader,memorystream,stringstream,dotnetzip,C#,Streamreader,Memorystream,Stringstream,Dotnetzip,我试图读取zip中的一个文件,以检查该文件中是否包含某个字符串。但我似乎可以将“文件”(内存流)放入字符串中进行搜索 当我使用以下代码时,“stringOfStream”始终为空,我做错了什么?读卡器总是有一个长度,读取字节返回不同的数字 using (ZipFile zip = ZipFile.Read(currentFile.FullName)) { ZipEntry e = zip[this.searchFile.Text];

我试图读取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();
            }

        }

谢谢

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

  }

检查它是否有效

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

  }

检查它是否有效

在调用
ReadToEnd
之前,我会尝试将流的位置设置为0。根据这里的答案,我相信Florent B.是正确的:我会尝试在调用
ReadToEnd
之前将流的位置设置为0。根据这里的答案,我相信Florent B.是正确的:有时解决方案非常简单!谢谢有人知道ZipFile.Read(currentFile.FullName)是否锁定该文件吗?或者它还能被写出来吗?有时候解决方案非常简单!谢谢有人知道ZipFile.Read(currentFile.FullName)是否锁定该文件吗?或者它还能被写出来吗?