首先我想做的事情:
我有一个文件列表,我想添加到同一档案中。此文件的文件夹结构应包含在存档中。
我遇到的问题是我无法将文件添加到现有存档中。当我使用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();
答案 0 :(得分:1)
将文件附加到现有存档时没有任何问题,使用SharpZipLib 0.64(来自Nuget)和来自sourceforge的7z.dll 9.20,但我使用的是CompressFiles()而不是CompressStream()。
答案 1 :(得分:-1)
7-Zip不支持此操作,即使使用其文件管理器也是如此。我建议您删除旧存档并使用新文件重新创建它。