Próbuję programowo rozpakować skompresowany plik.
Próbowałem użyć System.IO.Compression.GZipStream
klasy w .NET, ale kiedy moja aplikacja działa (właściwie test jednostkowy), otrzymuję ten wyjątek:
System.IO.InvalidDataException: Magiczna liczba w nagłówku GZip jest niepoprawna. Upewnij się, że przekazujesz strumień GZip.
Teraz zdaję sobie sprawę, że .zip
plik nie jest taki sam jak .gz
plik i GZip
to nie to samo co Zip
.
Ponieważ jednak mogę wyodrębnić plik, ręcznie klikając dwukrotnie plik spakowany, a następnie klikając przycisk „Wyodrębnij wszystkie pliki”, myślę, że powinien istnieć sposób na zrobienie tego również w kodzie.
Dlatego próbowałem użyć Process.Start()
ścieżki do skompresowanego pliku jako danych wejściowych. Powoduje to, że moja aplikacja otwiera okno pokazujące zawartość w spakowanym pliku. Wszystko w porządku, ale aplikacja zostanie zainstalowana na serwerze i nie będzie nikogo, kto kliknie przycisk „Wyodrębnij wszystkie pliki”.
Jak mogę uzyskać aplikację, aby wyodrębniała pliki z plików spakowanych?
Czy jest inny sposób? Wolę robić to w kodzie, bez pobierania bibliotek lub aplikacji stron trzecich; Departament Bezpieczeństwa nie jest zbyt fantazyjny ...