C# 将DotNetZip内存流转换为字符串
我试图读取zip中的一个文件,以检查该文件中是否包含某个字符串。但我似乎可以将“文件”(内存流)放入字符串中进行搜索 当我使用以下代码时,“stringOfStream”始终为空,我做错了什么?读卡器总是有一个长度,读取字节返回不同的数字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];
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)是否锁定该文件吗?或者它还能被写出来吗?