我正在尝试读取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();
}
}
由于
答案 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();
}
}
检查它是否有效。