[例外:从隔离的存储中提取zip时,标题中的EOF发生

问题描述 投票:2回答:2

我已经在独立的存储中使用Streamwriter生成了一个zip,名为temp.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时,它具有ReadWriteShare权限,并且我尝试手动解压缩,然后将其正确地提取而不会引起任何错误,但是在代码中显示错误EOF在HEADER中

请帮助..

谢谢

c# windows-phone-8
2个回答
5
投票

我仅使用以下简单代码就解决了EOF in header]:

Stream.Position =0;

希望对某些人有帮助。

谢谢。


0
投票

我尝试了用户user2561128的上述答案,但它没有为我解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.