Member 13405921 Ответов: 2

7z сжатие в C# не компрометирует все файлы


Привет,
Я работаю над сжатием файлов с помощью seven zip sharp в c#.
Мне нужно сжимать файлы с различными расширениями (например,. txt,*. abc,*. tff и т. д.).
Поток работает без исключений, но результат неправильный.
В папке 7z существуют только файлы *.txt.
Есть ли у кого-нибудь утешение?

Что я уже пробовал:

var cmp = new SevenZipCompressor
			{
				ScanOnlyWritable = false,
				CompressionMode = Directory.Exists(@"C:\Users\User\Desktop\Zip.7z") ? SevenZip.CompressionMode.Append : SevenZip.CompressionMode.Create,
			};
									cmp.CompressFiles(@"C:\Users\User\Desktop\Zip.7z", "c:\\aaa\\file.abc");//this file don't exist in the output folder

Richard MacCutchan

В чем заключается ценность outputStringBuilder и CompressionMode и каков ожидаемый результат? Вы проверили документацию, чтобы убедиться, что ваше использование правильно?

Member 13405921

Режим сжатия - это способ создания папки 7zip.
в нашем случае нужно обрешетить ящик, если он не существует, и обновить, если папка существует
outputStringBuilder - это выходная Папка (я меняю ее в приведенном ниже коде).
Я ожидаю, чтобы получить папку с 7z с файлами.Азбука.
на самом деле файл не существует.
Кстати, я пробую некоторые расширения файлов, и единственный файл, который существует в выходной папке, - это файл *.txt.

Richard MacCutchan

Я знаю это, и это не то, о чем я тебя спрашивал. Я спросил вас, что это такое? ценности из этих полей при запуске кода, и согласуются ли они с настройками, показанными в документации? Вам нужно собрать правильную диагностическую информацию и показать ее в своем вопросе; мы не можем догадаться, что происходит.

0x01AA

Как намекает Ричард Маккатчан, Похоже, вы не читали документы.

/// Пакует файлы в архив.
// <param name= " файлПолныйИмена " & gt;массив имен файлов для упаковки.
// <param name="archiveName" - имя архивного файла.
общественного недействительными CompressFiles(строка archiveName, параметры строку[] файлПолныйИмена)

Я бы сказал fileFullName не принимает что-то вроде "c:\xyz\*. xyz"

Member 13405921

Так Какой же метод можно использовать в данном случае?

0x01AA

Будьте осторожны, я не знаю этого инструмента, но похоже, что вам нужно создать SourceFileNameList самостоятельно. Взгляните на это:
Code 4 Freaks: сжатие файлов с помощью 7-Zip из кода C# [^]

0x01AA

Кстати: если вы хотите дать несколько баллов за ответ, вам следует нажать на самую правую звезду :-)

Richard MacCutchan

Выпрашивать очки-дурной тон.

0x01AA

? Знаете ли вы, что это было связано с ответом ОГА?
Я не нахожу здесь ответа со своей стороны.

Richard MacCutchan

Не важно, это все равно дурной тон.

0x01AA

Перестань бомбить меня и играй в мастера КП! Это был всего лишь намек на голосование вниз @OriginalGriff!!!

Richard MacCutchan

Я не собираюсь "бомбить" тебя, и, пожалуйста, не кричи. Я просто пытался заставить вас следовать протоколу, но вы, кажется, возражаете против любого моего замечания.

0x01AA

Вы, вероятно, арендовали истину для себя. И нет, я думаю, что пытался деэскалации, но для меня это вы, кто не в состоянии следовать. ПС.

Richard MacCutchan

Ха-ха, если это деэскалация, я бы не хотел видеть тебя, когда ты злишься. :)

0x01AA

ХВАТИТ МЕНЯ БОМБИТЬ!

Richard MacCutchan

Перестань кричать.

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Ты что-то упускаешь. Почему вы используете Directory.Exists в файле? Я предполагаю, что "Zip. 7z" - это файл в вашем случае.

Это неправильно. Исследователь угощает .ZIP-файлы в виде папок предназначены только для удобства пользователя. Они все еще являются реальными файлами, а не папками в приложениях.


Рейтинг:
16

OriginalGriff

Смотреть здесь: Code 4 Freaks: сжатие файлов с помощью 7-Zip из кода C# [^] он дает пример кода, который очень похож на ваш, но не передает фиксированную строку в качестве первого параметра.