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