创建多字节[]数组/文件

时间:2016-03-03 10:00:49

标签: c# zip

我正在尝试创建一个包含zip文件的zip文件。我正在使用ICSharpCode.SharpZipLib(由于项目限制,必须使用它)。如果我只有1个byte []数组,这可以正常工作..但它不适用于byte []列表。

foreach (byte[] internalZipFile in zipFiles)
{
    // Source : internal zip file
    MemoryStream inputMemoryStream = new      MemoryStream(internalZipFile);

    ZipEntry newZipEntry = new ZipEntry("AdManifest-" + i.ToString() + ".zip");
    newZipEntry.DateTime = DateTime.Now;

    zipStream.PutNextEntry(newZipEntry);

    StreamUtils.Copy(inputMemoryStream, zipStream, new byte[1024]);

    zipStream.CloseEntry();

    zipStream.IsStreamOwner = false; // to stop the close and underlying stream
    zipStream.Close();

    outputMemoryStream.Position = 0;

    zipByteArray = outputMemoryStream.ToArray();

    i++;
}
using (FileStream fileStream = new FileStream(@"c:\manifest.zip", FileMode.Create))
{
    fileStream.Write(zipByteArray, 0, zipByteArray.Length);
}

有人可以帮忙吗?我错过了什么?

2 个答案:

答案 0 :(得分:0)

我无法尝试,但我认为你在迭代体中需要的代码更少

另外,我已经删除了outpustmemorystream并仅使用了zipStream。

foreach (byte[] internalZipFile in zipFiles)
{
    // Source : internal zip file
    MemoryStream inputMemoryStream = new MemoryStream(internalZipFile);

    ZipEntry newZipEntry = new ZipEntry("AdManifest-" + i.ToString() + ".zip");
    newZipEntry.DateTime = DateTime.Now;

    zipStream.PutNextEntry(newZipEntry);

    StreamUtils.Copy(inputMemoryStream, zipStream, new byte[1024]);

    zipStream.CloseEntry();

    i++;
}
zipStream.IsStreamOwner = false; // to stop the close and underlying stream

zipStream.Position = 0;

zipByteArray = zipStream.ToArray();

zipStream.Close();

using (FileStream fileStream = new FileStream(@"c:\manifest.zip", FileMode.Create))
{
    fileStream.Write(zipByteArray, 0, zipByteArray.Length);
}

答案 1 :(得分:0)

我想出来了。 我们这里为我工作的人:

5,4,3,2,1