如何使用 SevenZipSharp 将文件添加到存档

发布于 11-29 06:15 字数 802 浏览 2 评论 0原文

首先,我想做的是:

我有一个要添加到同一存档的文件列表。该文件的文件夹结构应包含在存档中。

我遇到的问题是我无法将文件添加到现有存档中。当我使用 CompressionMode.Create 时,只有实际文件位于存档中,当我使用 CompressionMode.Append 时,我收到 KeyNotFoundException 且没有任何更改档案。

SevenZip.SevenZipCompressor szc = new SevenZip.SevenZipCompressor();
if (File.Exists(PathToArchive))
    szc.CompressionMode = SevenZip.CompressionMode.Append;
else
    szc.CompressionMode = SevenZip.CompressionMode.Create;

FileStream archive = new FileStream(Filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
try
{
    szc.DirectoryStructure = true;
    szc.EncryptHeaders = true;
    szc.DefaultItemName = filename; //if the full path given the folders are also created
    szc.CompressStream(filestream, archive, Password);
}
catch (Exception e) { }

archive.Close();

First of all what I want to do:

I have a list of files I'd like to add to the same archive. The folder structure to this files should be included to the archive.

The problem I have is that I can not add files to an existing archive. When I use CompressionMode.Create only the actual file is in the archive, when I use CompressionMode.Append I get a KeyNotFoundException and nothing changed on the archive.

SevenZip.SevenZipCompressor szc = new SevenZip.SevenZipCompressor();
if (File.Exists(PathToArchive))
    szc.CompressionMode = SevenZip.CompressionMode.Append;
else
    szc.CompressionMode = SevenZip.CompressionMode.Create;

FileStream archive = new FileStream(Filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
try
{
    szc.DirectoryStructure = true;
    szc.EncryptHeaders = true;
    szc.DefaultItemName = filename; //if the full path given the folders are also created
    szc.CompressStream(filestream, archive, Password);
}
catch (Exception e) { }

archive.Close();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丢了幸福的猪2024-12-06 06:15:58

我使用 SharpZipLib 0.64(来自 Nuget)和来自 sourceforge 的 7z.dll 9.20 将文件附加到现有存档没​​有任何问题,但我使用的是 compressfiles() 而不是 compressstream()。

I'm not having any problem to append files to an existing archive, with SharpZipLib 0.64 (from the Nuget) and 7z.dll 9.20 from sourceforge, but I'm using CompressFiles() instead of CompressStream().

饮惑2024-12-06 06:15:58

7-Zip 不支持此操作,即使使用其文件管理器也是如此。我建议您删除旧存档并使用新文件重新创建它。

Windows 7 x64 - 7-Zip 9.20

This Operation is NOT supported by 7-Zip, even when using its file manager. I suggest you just delete the old archive and recreate it with new files.

Windows 7 x64 - 7-Zip 9.20

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文