2

まずやりたいこと:

同じアーカイブに追加したいファイルのリストがあります。このファイルのフォルダー構造は、アーカイブに含める必要があります。

私が抱えている問題は、既存のアーカイブにファイルを追加できないことです。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();
4

2 に答える 2

1

SharpZipLib 0.64 (Nuget から) と sourceforge から 7z.dll 9.20 を使用して、既存のアーカイブにファイルを追加するのに問題はありませんが、CompressStream() の代わりに CompressFiles() を使用しています。

于 2012-05-17T18:53:27.263 に答える
-1

この操作は、ファイル マネージャーを使用している場合でも、7-Zip ではサポートされていません。古いアーカイブを削除して、新しいファイルで再作成することをお勧めします。

Windows 7 x64 - 7-Zip 9.20

于 2012-04-10T21:04:39.127 に答える