Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 11568|Відповідь: 2

[Джерело] [Справжній бій]. NET/C# викликає 7z декомпресію через командний рядок

[Копіювати посилання]
Опубліковано 2022-4-30 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. Деякі частини кодексу також мають ліцензійні обмеження unRAR.

Завантажити адресу:Вхід за гіперпосиланням видно., кроки завантаження та встановлення опущені (ця стаття встановлена у каталозі :D:\360Downloads)

Параметри командного рядка 7-Zip такі:


7-Zip 21.07 (x64): Авторські права (c) 1999-2021 Ігор Павлов : 2021-12-26

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} : встановити режим перезапису
  -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 (ultra)
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse підкаталоги для пошуку імен
  -sa{a|e|s} : встановити режим імені Архіву
  -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 : встановіть режим Large Pages
  -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# встановлює час тайм-ауту для методу
 Орендодавець| Опубліковано 2022-4-30 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