Установить сжатую корневую папку в SevenZipSharp - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь изменить существующий инструмент архивирования. В настоящее время инструмент архивации использует SharpZipLib. Я должен преобразовать это так, чтобы он использовал SevenZipSharp. При архивировании с помощью SharpZipLib я могу изменить каталог root в zip-архиве, и я хочу сохранить этот каталог root при работе с SevenZipSharp.

Так что если у меня есть, например, абсолютная структура

C:/
├──root/
   └── folders/
       └── files/
           ├── text1.txt
           ├── text2.txt
           ├── text3.txt
           ├── text4.txt
           └── subfiles/
               └── text5.txt

Тогда мой SevenSharpZip создаст zip с содержимым:

text1.txt
text2.txt
text3.txt
text4.txt
└── subfiles/
    └── text5.txt  

SharpZipLib создаст следующее

root/
└── folders/
    └── files/
        ├── text1.txt
        ├── text2.txt
        ├── text3.txt
        ├── text4.txt
        └── subfiles/
            └── text5.txt

Можно ли установить root для SevenZipSharp чтобы мои две молнии имели одинаковую внутреннюю структуру? Я не нашел настройки, чтобы изменить это соответственно. IncludeEmptyDirectory, PreserveDirectoryRoot и DirectoryStructure не дали мне нужного мне результата.

1 Ответ

0 голосов
/ 20 марта 2020

Я нашел ответ. Чтобы установить папку root, мне пришлось использовать метод

public void CompressFiles(string archiveName, int commonRootLength, params string[] fileFullNames)

Там у нас есть commonRootLength. Это отправная точка нашего общего root. Для моего примера выше это будет означать, что общий root начинается после первого "/", что означает, что параметр commonRootLenght должен быть равен 3.

...