我不知道为什么这不起作用 - 开始让我发疯!
其他人似乎没有这个问题
我的代码看起来像这样:
Stream stream = new MemoryStream();
try
{
// output zip
using (ZipFile zipFile = new ZipFile())
{
zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
ForEach(DataFile file In DataFiles)
{
String sourcePath = dataFile.Path;
String archiveName = dataFile.RealName;
//byte[] fileContents = File.ReadAllBytes(sourcePath);
//zipFile.AddEntry(archiveName, fileContents);
zipFile.AddFile(sourcePath, archiveName);
//e.FileName = archiveName;
}
zipFile.AddEntry("README.TXT", readmeMessage);
zipFile.Save(stream);
}
}
catch (Exception ex)
{
throw;
}
所有文件路径均有效。
如果我注释掉其余部分,添加自述文件可以正常工作。但是添加其他文件会导致 zip 文件无效。
我将不胜感激任何建议!
谢谢
更新
我注意到,如果我用完全正确的大小初始化流,它就可以工作。有谁知道如何在不将其写入磁盘的情况下获取存档的大小?
进一步更新
我现在添加了一个解决方法。
我可以通过将存档保存到磁盘然后将其读回另一个流来做我需要做的事情
非常蹩脚,我真的不喜欢它,所以如果有人能提出更好的方法,我将不胜感激!