Wymagania: Projekt musi zdekompresować lub skompresować przesłany skompresowany pakiet, co zazwyczaj można osiągnąć za pomocą WinRAR, ale musimy użyć metod programistycznych do implementacji, a ręczna dekompresja pliku jest niemożliwa. Ponieważ WinRAR jest płatny, możemy użyć .NET/C# do wywołania 7z, wykonując operacje wiersza poleceń w celu zaspokojenia naszych potrzeb.
Recenzja:
7-Zip to archiwizator plików o wysokim współczynniku kompresji. 7-Zip jest open-source i darmowy. Większość kodu jest licencjonowana przez GNU LGPL. Niektóre części kodu są licencjonowane na podstawie BSD 3 Conditions. Niektóre części kodu mają również ograniczenia licencyjne unRAR.
Adres do pobrania:Logowanie do linku jest widoczne., pominięto kroki pobierania i instalacji (artykuł jest zainstalowany w katalogu :D:\360Downloads)
Parametry linii poleceń 7-Zip są następujące:
7-Zip 21.07 (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-12-26
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]
<Commands> a : Dodaj pliki do archiwum b : Benchmark d : Usuń pliki z archiwum e : Rozpakuj pliki z archiwum (bez używania nazw katalogów) h: Obliczaj wartości skrótu dla plików i : Pokaż informacje o obsługiwanych formatach l : Lista zawartości archiwum rn : Przemianowanie plików w archiwum t : Testuj integralność archiwum u : Zaktualizuj pliki do archiwum x : eXtract files z pełnymi ścieżkami
<Switches> -- : Przełączniki stop i parsowanie @listfile -ai[r[-|0]]{@listfile|! Dzika karta} : Dołącz archiwa -ax[r[-|0]]{@listfile|! dzika karta} : eXclude archives -ao{a|s|t|u} : ustaw tryb Nadpisu -an : wyłącz pole archive_name -bb[0-3] : ustaw poziom logu wyjściowego -bd : wyłącz wskaźnik postępu -bs{o|e|p}{0|1|2} : ustaw strumień wyjściowy dla linii output/error/progress -BT : Pokaż statystyki czasu wykonania -I[r[-|0]]{@listfile|! Dzika karta} : Uwzględnij nazwy plików -m{Parameters} : ustaw metodę kompresji -mmt[N] : ustaw liczbę wątków CPU -mx[N] : ustaw poziom kompresji: -mx1 (najszybszy) ... -mx9 (ultra) -o{Directory} : zestaw Output Directory -p{Password} : set Password -r[-|0] : Podkatalogi rekurencji do wyszukiwania nazw -sa{a|e|s} : ustaw tryb nazw archiwum -scc{UTF-8| WIN| DOS} : ustaw zestaw znaków dla wejścia/wyjścia konsoli -scs{UTF-8| UTF-16LE| UTF-16BE| WIN| DOS| {id}} : set charset for list files -scrc[CRC32| CRC64| SHA1| SHA256|*] : ustaw funkcję skrótu dla poleceń x, e, h -sdel: usuń pliki po kompresji -seml[.] : Wyślij archiwum mailowo -sfx[{name}] : Utwórz archiwum SFX -si[{name}] : odczyt danych ze stdin -slp : ustaw tryb Duże Strony -slt : pokaż informacje techniczne dla polecenia l (List) -SNH: Przechowuj twarde linki jako linki -SNL : przechowuj symboliczne linki jako linki -sni : przechowuj informacje bezpieczeństwa NT -sns[-] : przechowuj alternatywne strumienie NTFS -Więc : zapisuj dane do stdout -SPD : wyłącz dopasowanie dzikich dla nazw plików -SPE : eliminuj duplikację folderu głównego dla polecenia extract -SPF : używaj w pełni kwalifikowanych ścieżek plików -ssc[-] : ustaw tryb czułej wielkości przypadków -SSE: Przestań tworzyć archiwum, jeśli nie da się otworzyć jakiegoś pliku wejściowego -ssp : nie zmieniaj czasu ostatniego dostępu plików źródłowych podczas archiwizacji -SSW : Kompresuj pliki współdzielone -STL : ustaw znacznik czasu archiwum z ostatnio zmodyfikowanego pliku -stm{HexMask} : ustaw maskę powinowactwa wątku CPU (liczba szesnastkowa) -stx{Type} : exclude archive type -t{Type} : Typ zbioru archiwum -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Opcje aktualizacji -v{Size}[b|k|m|g] : Tworzenie woluminów -w[{path}] : przypisz katalog pracy. Pusta ścieżka oznacza katalog tymczasowy -x[r[-|0]]{@listfile|! dzika karta} : eXclude nazwy plików -y : załóżmy Tak na wszystkie zapytania Kompresuj teczki za pomocą 7z
Polecenie brzmi następująco:
Dzięki dodaniu parametru -sdel, folder zh jest automatycznie usuwany po zakończeniu kompresji. Przetestujmy skompresowany plik za pomocą WinRAR, jak pokazano poniżej:
Rozpakuj plik za pomocą 7z
Polecenie brzmi następująco:
Dekompresja kończy się zgodnie z poniższym rysunkiem:
.NET/C# wywołuje dekompresję 7z za pomocą linii poleceń
Jak użyć kodu .NET/C# do wykonania wiersza poleceń? Kod jest następujący:
(Koniec)
|