我在名为 temp.zip 的隔离存储中使用streamwriter生成了一个zip,并在流中返回其字节以进行提取。请找到如下代码
stream = LoadZipFromLocalFolder(filename);
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var zipStream = new ZipInputStream(stream))
{
ZipEntry entry;
//EOF in header occuring on below line
while ((entry = zipStream.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(entry.Name);
string fileName = Path.GetFileName(entry.Name);
if (!string.IsNullOrEmpty(fileName))
{
if (!isoStore.DirectoryExists(directoryName))
{
isoStore.CreateDirectory(directoryName);
}
string fileFullPath = Path.Combine(directoryName, fileName);
Debug.WriteLine(fileFullPath);
using (var streamWriter = new BinaryWriter(new IsolatedStorageFileStream(fileFullPath, FileMode.Create, FileAccess.Write, FileShare.Write, isoStore)))
{
var buffer = new byte[2048];
int size;
while ((size = zipStream.Read(buffer, 0, buffer.Length)) > 0)
{
streamWriter.Write(buffer, 0, size);
}
streamWriter.Close();
streamWriter.Dispose();
}
}
}
}
}
当我创建temp.zip时,它具有 ReadWrite ,共享权限,我也尝试手动解压缩,然后正确解压缩而不会导致任何错误,但是编码在HEADER中显示错误 EOF 。
请帮助..
由于
答案 0 :(得分:2)
我只使用一个简单的代码解决了标题中的 EOF:
Stream.Position =0;
希望对某人有所帮助。
感谢。
答案 1 :(得分:1)
我尝试了用户user2561128
的回答,但并没有为我解决问题。
相反,我选择安装NuGet System.IO.Compression.ZipFile
v4.3.0,并使用下面的代码来工作。
ZipFile.ExtractToDirectory(zipArchive, destinationFolder, overwriteFiles:true);
似乎也有人在GitHub issue的npoi分支中发现了相同的问题。