例外:从孤立存储中提取zip时,标题中出现EOF

时间:2014-10-29 05:09:48

标签: c# windows-phone-8

我在名为 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

请帮助..

由于

2 个答案:

答案 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分支中发现了相同的问题。