Исключение файлов с помощью SevenZipSharp в коде

В настоящее время я работаю над небольшим проектом, в котором мне нужно определить несколько путей, которые необходимо сжать в один zip-файл.

Теперь следующий случай: один из этих путей является каталогом, который должен быть рекурсивно сжат (включая все файлы и подпапки, которые он содержит). Перед сжатием я проверяю несколько вещей, включая разрешения. Если текущий пользователь, который хочет выполнить сжатие, не имеет прав доступа к файлу или папке, его следует исключить.

Теперь, как я могу исключить несколько файлов и каталогов из сжатия в рекурсивном режиме?

Я уже пробовал что-то подобное, но аргумент, кажется, существует только в cmd.

compressor.CustomParameters.Add("-x", "@C:\\Users\\******\\Desktop\\exclude.txt");

person COBRA.cH    schedule 18.02.2013    source источник


Ответы (2)


Я не нашел в SevenZipSharp возможности исключить файлы. Вместо этого я теперь использую DotNetZip, у которого есть хороший метод для удаления файлов: ZipFile.RemoveEntry() и ZipFile.RemoveEntries(), например:

foreach (string removePath in Verifier.ExcludePaths)
{
    try
    {
        // Remove files and directories to be excluded
        zipFile.RemoveEntry(removePath);
    }
    catch (Exception)
    {
        Logger.Warn("Could not exclude path \"{0}\".",removePath);
    }
}
person COBRA.cH    schedule 19.02.2013

Я обнаружил, что SevenZipSharp может исключать файлы:

SevenZipCompressor sevenZipCompressor = new SevenZipCompressor();
sevenZipCompressor.ModifyArchive(archiveName, dictionary);
// string archiveName: archive name
// Dictionary<int Index, string NewFileName>: NewFileName or Null value to delete the corresponding index. 
person Nhut Tran    schedule 06.12.2017