此代码工作正常
ZipStorer storer = ZipStorer.Create(@"H:\temp\sysInfo.zip", "");
if (systemInfoStream != null)
storer.AddStream(ZipStorer.Compression.Deflate, "SystemInfo.txt",
systemInfoStream, DateTime.Now, null);
但是当我尝试手动使用 ZipStorer 的内部流时不能正常工作:
MemoryStream result = new MemoryStream();
ZipStorer storer =ZipStorer.Create(new MemoryStream(), "");
if (systemInfoStream != null) {
storer.AddStream(ZipStorer.Compression.Deflate, "SystemInfo.txt",
systemInfoStream, DateTime.Now, null);
storer.ZipFileStream.Position = 0;
storer.ZipFileStream.CopyTo(result);
}
File.WriteAllBytes(@"H:\temp\sysInfo.zip", result.ToArray());
第二个样本的结果是损坏的 zip 文件,用 WinRar 修复后可以读取。第一个样本工作得很好。我看到的唯一显着区别是,在第二个示例中,我没有明确地将文件添加到存储中。