SevenZipSharp — добавлять файлы в архив и удалять пути к файлам

Я использую SevenZipSharp для сжатия файлов в zip-файл. У меня есть 2 проблемы:

  1. При многократном использовании CompressFiles для одного и того же целевого файла файлы не добавляются, а перезаписываются.

  2. Я хотел бы, чтобы файлы добавлялись без полного пути, но не могу найти, как это сделать (я думал, что PreserveDirectoryRoot = false поможет, но это не так).

У кого-нибудь есть идея?


person Maya    schedule 10.11.2010    source источник


Ответы (1)


Вам нужно использовать CompressionMode.Append после первого вызова. По умолчанию CompressionMode.Create. Путь можно удалить, изменив DirectoryStructure.

Соответствующий исходный код находится здесь.

    public sealed partial class SevenZipCompressor
#if UNMANAGED
        : SevenZipBase
#endif
    {
        /// Gets or sets the compression mode.
        /// </summary>
        public CompressionMode CompressionMode { get; set; }
        /// <summary>

        /// Gets or sets the value indicating whether to preserve the 
        ///   directory structure.
        /// </summary>
        public bool DirectoryStructure { get; set; }
    }
person Steve Townsend    schedule 10.11.2010
comment
Спасибо, структура каталогов работает, но у меня все еще проблема с режимом сжатия. После создания zip я изменил режим на Append (comp.CompressionMode = SevenZip.CompressionMode.Append;). Однако при выполнении comp.CompressFiles для второго файла выдается исключение: Данного ключа нет в словаре. Я не могу понять, почему. - person Maya; 11.11.2010