我试图使用下面的代码将一个文件添加到现有压缩文档。运行时没有错误或者异常显示,但文件也没有被添加到存档。这是为什么?
using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
{
zipToWrite.SetLevel(9);
using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
{
byte[] byteBuffer = new byte[newFileStream.Length - 1];
newFileStream.Read(byteBuffer, 0, byteBuffer.Length);
ZipEntry entry = new ZipEntry(sourceFiles[0]);
zipToWrite.PutNextEntry(entry);
zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
zipToWrite.CloseEntry();
zipToWrite.Close();
zipToWrite.Finish();
}
}
15票 |
在 DotNetZip, 添加文件到现有的zip 文件中是非常简单和可靠的。
如果您想要指定一个新文件的目录路径,可以使用AddFile()的不同重载方法。
如果你想添加一个文件集合,使用addfile()。
你不需要担心Close(),CloseEntry(),CommitUpdate(),Finish() 或其他。 |
2票 |
Codeproject上有人使用这段代码。唯一的区别是换种方式关闭和完成,代码如下:
顺便说一句:
这是不正确的,size 是 newFileStream.length ,Read读取错误. |
1票 |
我认为你的
Finish 调用应该在你的Close 调用之前更新: 好像有一个 已知的bug.可能已经被修复- 你需要检查你的SharpZipLib版本是否包含任何修复。如果没有,你可以通过如下方法解决它:复制所有文件到一个新的压缩文档,添加新文件,然后用旧的压缩文件名命名新的压缩文件。 |
1票 |
|
ZippedFolder 文件夹位于网站的根目录,里面有一个MyZipFiles压缩文档。
siteImages 文件夹包含所有的图像文件。 下面是压缩图像代码
如果我们有不同的文件格式并且我们想要文件保存在各自的文件夹,您可以按如下方式编写代码.
现在压缩文件包含了两个文件夹 |
|
ZipOutputStream 类不会更新现有的ZIP文件。使用ZipFile 类替代 |
|
我发现一个保持ZipFile和ZipEntry的简单解决方案
|