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

Вид: 11568|Ответ: 2

[Источник] [Настоящий бой]. NET/C# вызывает декомпрессию 7z через командную строку

[Скопировать ссылку]
Опубликовано 30.04.2022 17:46:24 | | | |
Требования: Проекту необходимо декомпрессировать или сжать загруженный сжатый пакет, что обычно можно сделать через WinRAR, но для реализации этого необходимо использовать методы программирования, и вручную распаковывать файл невозможно. Поскольку WinRAR является платным, мы можем использовать .NET/C# для вызова 7z, выполняя командные операции для удовлетворения наших потребностей.

Обзор:

.net/c#, чтобы получить информацию о файле в zip-пакете
https://www.itsvse.com/thread-4831-1-1.html

Java encapsulation zip unzip method
https://www.itsvse.com/thread-7750-1-1.html

C# использует ICSharpCode.SharpZipLib.dll для сжатия и распаковки файлов/папок
https://www.itsvse.com/thread-3726-1-1.html
7-Zip — это архиватор файлов с высоким степенем сжатия. 7-Zip — это открытый исходный код и бесплатный ПО. Большая часть кода лицензирована под лицензией GNU LGPL. Некоторые части кода лицензированы в соответствии с BSD 3 Terms. Некоторые части кодекса также имеют ограничения на лицензирование unRAR.

Адрес для скачивания:Вход по гиперссылке виден., этапы загрузки и установки опущены (эта статья установлена в каталоге :D:\360Downloads)

Параметры командной строки 7-Zip следующие:


7-Zip 21.07 (x64): Авторские права (c) 1999-2021 Игорь Павлов: 26.12.2021

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : Добавить файлы в архив
  b : Бенчмарк
  d : Удалить файлы из архива
  e : Извлечение файлов из архива (без использования имен каталогов)
  h : Вычисление хеш-значений для файлов
  i : Показать информацию о поддерживаемых форматах
  l : Список содержания архива
  rn : Переименовать файлы в архиве
  t : Целостность теста архива
  u : Обновить файлы в архив
  x : eXtract файлы с полными путями

<Switches>
  -- : Стоп-переключатели и @listfile разбор
  -ai[r[-|0]]{@listfile|! wildcard} : Включить архивы
  -ax[r[-|0]]{@listfile|! wildcard} : архивы eXclude
  -ao{a|s|t|u} : set Overwrite mode
  -an : отключить archive_name поле
  -bb[0-3] : установка уровня логарифма выхода
  -bd : отключить индикатор прогресса
  -bs{o|e|p}{0|1|2} : установка выходного потока для строки вывода/ошибки/прогресса
  -bt : показать статистику времени выполнения
  -i[r[-|0]]{@listfile|! wildcard} : Включить имена файлов
  -m{Parameters} : метод сжатия множества
    -mmt[N] : установленное количество потоков процессора
    -mx[N] : установить уровень сжатия: -mx1 (самый быстрый) ... -mx9 (ультра)
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse подкаталоги для поиска по именам
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8| WIN| DOS} : set charset для консольного ввода/вывода
  -scs{UTF-8| UTF-16LE| UTF-16BE| WIN| DOS| {id}} : set charset для списков.
  -scrc[CRC32| CRC64| SHA1| SHA256|*] : задайте хеш-функцию для команд x, e, h
  -sdel : удалять файлы после сжатия
  -seml[.] : отправить архив по электронной почте
  -sfx[{name}] : Создать архив звуковых эффектов
  -si[{name}] : Чтение данных из STDIN
  -slp : установка режима больших страниц
  -slt : показать техническую информацию для команды l (List)
  -SNH : храните жёсткие ссылки как ссылки
  -snl : сохранять символические ссылки как ссылки
  -sni: хранить информацию о безопасности NT
  -sns[-] : сохранять альтернативные потоки NTFS
  -so : записывать данные в stdout
  -spd : отключить совпадение джокеров для имён файлов
  -spe : устранить дублирование корневой папки для команды extract
  -spf : используйте полностью квалифицированные пути файлов
  -ssc[-] : установка чувствительного режима
  -SSE : Прекратите создание архива, если не может открыть какой-то входный файл
  -ssp : не меняйте время последнего доступа исходным файлам при архивировании
  -SSW : сжатие общих файлов
  -stl : установка временной метки архива из последнего изменённого файла
  -stm{HexMask} : установка маски аффинности потоков процессора (шестнадцатеричное число)
  -stx{Type} : исключить тип архива
  -t{Type} : Тип архива
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Опции обновления
  -v{Size}[b|k|m|g] : Создание томов
  -w[{path}] : назначить каталог работ. Пустой путь означает временный каталог
  -x[r[-|0]]{@listfile|! wildcard} : eXclude имена файлов
  -y : предположим, что Да по всем запросам
Сжимайте папки с помощью 7z

Команда следующая:


Благодаря добавлению параметра -sdel, папка zh автоматически удаляется после завершения сжатия. Давайте протестируем сжатый файл с помощью WinRAR, как показано ниже:



Распаковали файл с помощью 7z

Команда следующая:


Декомпрессия завершена, как показано на рисунке ниже:



.NET/C# вызывает декомпрессию 7z через командную строку

Как использовать код .NET/C# для выполнения командной строки? Код таков:

(Конец)




Предыдущий:65 сайтов для скачивания исходного кода
Следующий:[Настоящий бой]. NET/C# устанавливает время тайм-аута для метода
 Хозяин| Опубликовано 30.04.2022 17:49:29 |
e Распаковать файлы (все сжатые файлы распаковываются в одну и ту же папку без сохранения оригинальной структуры каталогов)
# Распаковать файл в текущую папку
7z e archive.zip
# Распаковать файл в каталог e:\testunzip
7z e archive.zip -oe:\testunzip
# Распаковать все PNG-файлы в каталог e:\testunzip
7z e archive.zip -oe:\testunzip *.png -r

x Распаковать файл (сохранить оригинальную структуру каталога)
# Распаковать файл в текущую папку
7z x archive.zip
# Распаковать файл в каталог e:\testunzip
7z x archive.zip -oe:\testunzip
# Распаковать все PNG-файлы в каталог e:\testunzip
7z x archive.zip -oe:\testunzip *.png -r

Просмотр списка всех файлов в пакете
7z l archive.zip

-ao Как обрабатываются файлы с одинаковым именем
# -aoa перезаписывает файл с тем же названием
7z x archive.zip -aoa
# -aos Пропусти файл с тем же названием
# -Аоу переименовывает архив на то же имя
# -aot переименовывает файлы в распакованной директории с тем же именем

d Удалить файлы внутри пакета
# Удалить все файлы с суффиксом .bak в archive.zip
7z d archive.zip *.bak -r

RN переименовывает файл внутри пакета
# Переименовать файл 1.png 1_new.png 2.png папку\2_new.png
7z сейчас archive.7z 1.png 1_new.png 2.png папке\2_new.png
Опубликовано 2022-4-30 20:05:18 |
Учитесь учиться.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com