首先我想做的是:

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

我的问题是我无法将文件添加到现有存档中。当我使用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();

最佳答案

使用SharpZipLib 0.64(来自Nuget)和Sourceforge的7z.dll 9.20,将文件追加到现有存档中没有任何问题,但是我使用的是CompressFiles()而不是CompressStream()。

09-26 19:18