с самого начала я хотел бы отметить, что моя цель - создать разделенный (несжатый) архив с сохранением структуры каталога нетронутой.
Я проверил несколько библиотек, но мне кажется, что SevenZipSharp ближе всего подходит для этого.
Прямо сейчас у меня есть такой код:
public static void PackFiles()
{
string dll = @"C:\Users\MyUsername\Downloads\7zip32b\7z.dll";
SevenZipCompressor.SetLibraryPath(dll);
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.ArchiveFormat = OutArchiveFormat.SevenZip;
compressor.CompressionMode = CompressionMode.Create;
compressor.TempFolderPath = System.IO.Path.GetTempPath();
compressor.VolumeSize = 1 * 1024 * 1024;
//compressor.CompressDirectory(defaultContentFolder, (defaultReadyZipFolder + zipName + ".zip"));
// THIS ONE IS WORKING, BUT PACKS WHOLE FOLDER INSIDE ARCHIVE..
string[] files = Directory.GetFiles(defaultContentFolder,"*.*",SearchOption.AllDirectories);
compressor.CompressFiles(@"C:\Users\MyUsername\Packed\ArchiveName", files);
Console.WriteLine("Zipped!");
}
Итак, как я прокомментировал выше. При использовании compressor.CompressDirectory
мне удалось заархивировать всю папку, которая затем была упакована в другой архив, который разделился. Совсем не красиво...
Поэтому я подумал о том, чтобы дать ему список файлов внутри каталога, чтобы упаковать их в один архив, но это не работает.
Когда я отлаживаю, компилятор просто выполняет метод CompressFiles
, но вообще не вводит другие части кода, как будто он был пропущен или что-то в этом роде... Параметр файлов действительно состоит из массива путей к файлам, так что эта часть в порядке?
Есть идеи, что там происходит? Или, может быть, разные решения для проверки?
Заранее спасибо!