Jak otworzyć plik ZIP w C#
ZIP to format systemu plików archiwum, który obsługuje bezstratną kompresję danych. Plik ZIP może zawierać jeden lub więcej plików lub katalogów, które mogły zostać skompresowane. Format pliku ZIP pozwala na stosowanie kilku algorytmów kompresji, choć najczęściej używany jest DEFLATE. Format ZIP został wkrótce obsługiwany przez wiele programów użytkowych. Czołowi dostawcy systemów operacyjnych od dawna obsługują archiwa ZIP. Microsoft wprowadził obsługę plików ZIP już w systemie Windows 98, a pozostali producenci poszli w jego ślady.
W tym wpisie na blogu omówimy nowoczesny, łatwy i wydajny sposób otwierania plików archiwów ZIP lub wyodrębnionych plików za pomocą IronZIP. Zapoznamy się z ogólnymi informacjami na temat plików ZIP oraz ich zaletami. Następnie przyjrzymy się opcjom dostępnym w przestrzeni nazw systemu do pracy z formatem plików ZIP. Następnie zbadamy instrukcje krok po kroku dotyczące otwierania pliku ZIP, wyodrębniania pliku ZIP do tymczasowego folderu, tworzenia nowego pliku ZIP i dodawania plików do istniejących plików ZIP.
Zalety korzystania z plików ZIP w aplikacjach
- Kompresja: Technika ta zmniejsza rozmiar archiwizowanych plików/folderów przy użyciu różnych algorytmów kompresji, takich jak Implode, Deflate, Deflate64, bzip2, LZMA, WavPack, PPMd itp.
- Skrócony czas przesyłania: Mniejsze rozmiary plików oznaczają szybsze przesyłanie, zwłaszcza podczas wysyłania plików przez Internet. Jest to szczególnie korzystne w przypadku załączników do wiadomości e-mail oraz przesyłania lub pobierania plików ze stron internetowych.
- Konsolidacja plików: Pliki ZIP umożliwiają konsolidację wielu plików w jednym archiwum, co zmniejsza liczbę plików, którymi trzeba zarządzać. Jest to przydatne przy organizowaniu projektów lub dystrybucji oprogramowania składającego się z wielu plików.
- Ochrona hasłem: Wiele programów do obsługi plików ZIP oferuje opcję zabezpieczenia archiwum hasłem, co stanowi dodatkową warstwę bezpieczeństwa dla plików. Jest to przydatne, gdy chcesz ograniczyć dostęp do zawartości pliku ZIP.
Tworzenie archiwów ZIP i rozpakowywanie plików ZIP za pomocą IronZIP
Wprowadzenie do biblioteki IronZIP oraz dokumentację można znaleźć tutaj. W aplikacjach napisanych w języku C# pliki ZIP można tworzyć i rozpakowywać na różne sposoby. Pakiet IronZIP NuGet posiada wszystkie funkcje niezbędne do archiwizacji plików w różnych formatach: ZIP, TAR, GZIP i BZIP2. Poniżej przedstawiono przykładowe kroki dotyczące wykorzystania IronZIP w nowoczesnym programowaniu aplikacji do tworzenia aplikacji nowej generacji służących do otwierania plików ZIP, wyodrębniania plików ZIP, tworzenia nowych plików ZIP itp.
Krok 1. Utwórz aplikację konsolową .NET Core
Utwórz projekt
Aplikację konsolową .NET można stworzyć za pomocą programu Visual Studio. Otwórz program Visual Studio i wybierz opcję Utwórz projekt. Tutaj można zobaczyć różne szablony do tworzenia projektu. Najprostszym sposobem na zademonstrowanie lub przetestowanie kodu jest stworzenie aplikacji konsolowej. Wybierzemy szablon projektu Console App.

Wpisz nazwę projektu
W poniższym oknie można wprowadzić nazwę projektu, lokalizację projektu do zapisania w systemie plików oraz ścieżkę do folderu rozwiązania. Możesz pozostawić foldery "solution" i "project" w tych samych lokalizacjach lub umieścić je w różnych folderach.

Wybierz wersję .NET Framework
Kolejnym krokiem jest wybór wersji .NET Framework dla projektu. Jeśli chcesz programować w konkretnej wersji, określ wersję, którą preferujesz. W przeciwnym razie zawsze wybieraj najnowszą stabilną wersję do tworzenia projektu. Najnowszą wersję można pobrać ze strony internetowej firmy Microsoft. Następnie kliknij przycisk Utwórz, aby wygenerować aplikację konsolową.

Spowoduje to utworzenie domyślnego projektu na podstawie szablonu oraz zapisanie plików projektu i rozwiązania w określonych katalogach. Po utworzeniu projekt będzie wyglądał podobnie do poniższego. Czasami klasa nie jest używana w program.cs w najnowszych wersjach.
// Import necessary namespaces
using System;
// Define the namespace
namespace MyApp // Note: actual namespace depends on the project name.
{
// Define the Program class
internal class Program
{
// Main method: Entry point of the application
static void Main(string[] args)
{
// Print a welcome message
Console.WriteLine("Hello, World!");
}
}
}
// Import necessary namespaces
using System;
// Define the namespace
namespace MyApp // Note: actual namespace depends on the project name.
{
// Define the Program class
internal class Program
{
// Main method: Entry point of the application
static void Main(string[] args)
{
// Print a welcome message
Console.WriteLine("Hello, World!");
}
}
}
' Import necessary namespaces
Imports System
' Define the namespace
Namespace MyApp ' Note: actual namespace depends on the project name.
' Define the Program class
Friend Class Program
' Main method: Entry point of the application
Shared Sub Main(ByVal args() As String)
' Print a welcome message
Console.WriteLine("Hello, World!")
End Sub
End Class
End Namespace
Aby utworzyć nowy plik ZIP i wyodrębnić wszystkie pliki z archiwum ZIP, możemy użyć biblioteki System.IO.Compression z bibliotek domyślnych. Poniższy kod pokazuje, jak używać metod statycznych ZipFile.OpenRead i ZipFile.Open do otwierania plików ZIP lub wyodrębniania plików z plików ZIP.
// Import necessary namespaces
using System;
using System.IO;
using System.IO.Compression;
public class ZipExample
{
public static void Main()
{
Console.WriteLine("-----------Zip - Unzip-----------");
// Method to add a file entry to the ZIP archive
static void AddEntry(string filePath, ZipArchive zipArchive)
{
// Get file name from the file path
var file = Path.GetFileName(filePath);
// Create a new entry in the ZIP archive for the file
zipArchive.CreateEntryFromFile(filePath, file);
}
// Name of the ZIP file to be created
var zip = "myFile.zip";
// Open or create the ZIP file for updating
using (ZipArchive archive = ZipFile.Open(zip, ZipArchiveMode.Update))
{
// Add files to the archive
AddEntry("file1.txt", archive);
AddEntry("file2.txt", archive);
}
// Directory where we want to extract the ZIP files
var dirToExtract = "extract";
// Create the directory if it does not exist
if (!Directory.Exists(dirToExtract))
{
Directory.CreateDirectory(dirToExtract);
}
// Extract the contents of the ZIP file to the specified directory
ZipFile.ExtractToDirectory(zip, dirToExtract);
// Indicate that extraction is complete
Console.WriteLine("Files extracted to: " + dirToExtract);
}
}
// Import necessary namespaces
using System;
using System.IO;
using System.IO.Compression;
public class ZipExample
{
public static void Main()
{
Console.WriteLine("-----------Zip - Unzip-----------");
// Method to add a file entry to the ZIP archive
static void AddEntry(string filePath, ZipArchive zipArchive)
{
// Get file name from the file path
var file = Path.GetFileName(filePath);
// Create a new entry in the ZIP archive for the file
zipArchive.CreateEntryFromFile(filePath, file);
}
// Name of the ZIP file to be created
var zip = "myFile.zip";
// Open or create the ZIP file for updating
using (ZipArchive archive = ZipFile.Open(zip, ZipArchiveMode.Update))
{
// Add files to the archive
AddEntry("file1.txt", archive);
AddEntry("file2.txt", archive);
}
// Directory where we want to extract the ZIP files
var dirToExtract = "extract";
// Create the directory if it does not exist
if (!Directory.Exists(dirToExtract))
{
Directory.CreateDirectory(dirToExtract);
}
// Extract the contents of the ZIP file to the specified directory
ZipFile.ExtractToDirectory(zip, dirToExtract);
// Indicate that extraction is complete
Console.WriteLine("Files extracted to: " + dirToExtract);
}
}
' Import necessary namespaces
Imports System
Imports System.IO
Imports System.IO.Compression
Public Class ZipExample
Public Shared Sub Main()
Console.WriteLine("-----------Zip - Unzip-----------")
' Method to add a file entry to the ZIP archive
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' static void AddEntry(string filePath, ZipArchive zipArchive)
' {
' ' Get file name from the file path
' var file = Path.GetFileName(filePath);
'
' ' Create a new entry in the ZIP archive for the file
' zipArchive.CreateEntryFromFile(filePath, file);
' }
' Name of the ZIP file to be created
Dim zip = "myFile.zip"
' Open or create the ZIP file for updating
Using archive As ZipArchive = ZipFile.Open(zip, ZipArchiveMode.Update)
' Add files to the archive
AddEntry("file1.txt", archive)
AddEntry("file2.txt", archive)
End Using
' Directory where we want to extract the ZIP files
Dim dirToExtract = "extract"
' Create the directory if it does not exist
If Not Directory.Exists(dirToExtract) Then
Directory.CreateDirectory(dirToExtract)
End If
' Extract the contents of the ZIP file to the specified directory
ZipFile.ExtractToDirectory(zip, dirToExtract)
' Indicate that extraction is complete
Console.WriteLine("Files extracted to: " & dirToExtract)
End Sub
End Class
W powyższym kodzie plik ZIP o nazwie myFile.zip jest używany w przestrzeni nazw systemu. Metoda Open służy do otwierania pliku ZIP w określonym trybie. Można to również wykorzystać do tworzenia nowych plików archiwów ZIP. Po otwarciu możemy dodać nowy wpis do archiwum za pomocą metody AddEntry, a następnie ExtractToDirectory wyodrębnia pliki archiwum ZIP do określonego katalogu. Jeśli katalog nie istnieje, zostanie utworzony przy użyciu Directory.CreateDirectory.
Krok 2. Instalacja IronZIP za pomocą menedżera pakietów NuGet
Otwórz Project Manager w Visual Studio i wyszukaj pakiet IronZIP. Następnie wybierz najnowszą wersję i kliknij "Zainstaluj". Możesz zmienić wersję do zainstalowania z listy rozwijanej. Następnie kliknij Zainstaluj.

Utwórz plik archiwum ZIP i dodaj pliki za pomocą IronZIP

IronZIP to biblioteka do kompresji i dekompresji archiwów opracowana przez firmę Iron Software. Oprócz powszechnie używanego formatu ZIP obsługuje również formaty TAR, GZIP i BZIP2.
IronZIP to biblioteka archiwizacji ZIP w języku C#, która stawia na dokładność, łatwość obsługi i szybkość. Jego przyjazny dla użytkownika interfejs API umożliwia programistom łatwe dodanie funkcji archiwizacji do nowoczesnych projektów .NET w ciągu kilku minut.
IronZIP oferuje wiele zalet w porównaniu z biblioteką System.IO.Compression. Podczas kompresji można określić żądany współczynnik kompresji, a także użyć różnych algorytmów kompresji, takich jak ZIP, TAR, GZIP, BZIP2. Obsługuje również platformy mobilne, internetowe i stacjonarne oraz różne wersje .NET.
// Setup: Specify the path for the new ZIP archive
var archivePath = "ironZip.zip";
// Check if the archive already exists, and delete it if so
if (File.Exists(archivePath))
{
File.Delete(archivePath);
}
// Use IronZIP library to create a new ZIP archive
using (var archive = new IronZipArchive(9)) // Compression level: 9 for maximum compression
{
// Add files to the ZIP archive
archive.Add("file1.txt");
archive.Add("file2.txt");
// Save the archive to the specified path
archive.SaveAs(archivePath);
}
// Setup: Specify the path for the new ZIP archive
var archivePath = "ironZip.zip";
// Check if the archive already exists, and delete it if so
if (File.Exists(archivePath))
{
File.Delete(archivePath);
}
// Use IronZIP library to create a new ZIP archive
using (var archive = new IronZipArchive(9)) // Compression level: 9 for maximum compression
{
// Add files to the ZIP archive
archive.Add("file1.txt");
archive.Add("file2.txt");
// Save the archive to the specified path
archive.SaveAs(archivePath);
}
' Setup: Specify the path for the new ZIP archive
Dim archivePath = "ironZip.zip"
' Check if the archive already exists, and delete it if so
If File.Exists(archivePath) Then
File.Delete(archivePath)
End If
' Use IronZIP library to create a new ZIP archive
Using archive = New IronZipArchive(9) ' Compression level: 9 for maximum compression
' Add files to the ZIP archive
archive.Add("file1.txt")
archive.Add("file2.txt")
' Save the archive to the specified path
archive.SaveAs(archivePath)
End Using
Początkowy kod źródłowy konfiguruje się poprzez określenie nazwy pliku archiwum ZIP i sprawdzenie, czy podany katalog istnieje. Następnie archiwizujemy pliki, tworząc plik ZIP przy użyciu metody Add. Drugi parametr w parametrze kompresji ma wartość 1 dla niższej i 9 dla wyższej. Pliki tekstowe można skompresować do maksymalnego poziomu 9 bez utraty jakości, a pliki graficzne można skompresować na niższym poziomie, aby uniknąć utraty danych.
Otwórz plik archiwum ZIP za pomocą IronZIP
Klasa IronArchive może być również używana do wyodrębniania plików z archiwum ZIP. Wszystkie pliki są wyodrębniane za pomocą IronArchive.ExtractArchiveToDirectory, co pomaga wyodrębnić wszystkie pliki do określonych katalogów, jak poniżej.
// Directory to extract all files from the ZIP archive
var extractionPath = "IronZipFiles";
// Check if the directory exists; if not, create it
if (!Directory.Exists(extractionPath))
{
Directory.CreateDirectory(extractionPath);
}
// Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath);
// Directory to extract all files from the ZIP archive
var extractionPath = "IronZipFiles";
// Check if the directory exists; if not, create it
if (!Directory.Exists(extractionPath))
{
Directory.CreateDirectory(extractionPath);
}
// Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath);
' Directory to extract all files from the ZIP archive
Dim extractionPath = "IronZipFiles"
' Check if the directory exists; if not, create it
If Not Directory.Exists(extractionPath) Then
Directory.CreateDirectory(extractionPath)
End If
' Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath)
Powyższy kod rozpakowuje pliki ZIP do katalogu. Kod sprawdza, czy katalog istnieje, a jeśli nie, plik archiwum ZIP jest rozpakowywany do określonego katalogu.
Licencjonowanie (dostępna bezpłatna wersja próbna)
Aby powyższy kod działał, wymagańy jest klucz licencyjny. Ten klucz należy umieścić w appsettings.json.
{
"IronZip.LicenseKey": "your license key"
}
Licencja Trial jest dostępna dla programistów po zarejestrowaniu się tutaj i tak, do uzyskania licencji Trial nie jest wymagańa karta kredytowa. Można podać adres e-mail i zarejestrować się, aby skorzystać z bezpłatnej wersji próbnej.
Dodaj pliki do istniejącego archiwum ZIP
Użyj statycznej metody FromFile z IronZIP, aby otworzyć istniejące archiwum. Metoda ta wymaga również podania nazwy pliku nowego archiwum, które zostanie utworzone jako wynik.
// Path to a new file to be added to the existing ZIP archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
// Open the existing ZIP archive and add a new file
using (var file = IronArchive.FromFile("ironZip.zip", archivePlusPath))
{
// Add additional files to the existing archive
file.Add(file3);
}
// Path to a new file to be added to the existing ZIP archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
// Open the existing ZIP archive and add a new file
using (var file = IronArchive.FromFile("ironZip.zip", archivePlusPath))
{
// Add additional files to the existing archive
file.Add(file3);
}
' Path to a new file to be added to the existing ZIP archive
Const file3 As String = ".\image3.png"
Dim archivePlusPath = "ironZipPlus.zip"
' Open the existing ZIP archive and add a new file
Using file = IronArchive.FromFile("ironZip.zip", archivePlusPath)
' Add additional files to the existing archive
file.Add(file3)
End Using
Kod wykorzystuje metodę statyczną IronArchive.FromFile do otwarcia istniejącego pliku ZIP, a następnie dodania nowego pliku jako elementu archiwum. Po usunięciu obiektu pliku zaktualizowane archiwum zostanie pomyślnie zapisane.
Aktualizacje
Biblioteka IronZIP jest stale aktualizowana na podstawie opinii klientów/użytkowników, a wszystkie aktualizacje można znaleźć tutaj.
Wnioski
Podsumowując, programowanie plików ZIP jest niezbędną umiejętnością w nowoczesnym tworzeniu aplikacji, gdzie dostawcy usług w chmurze pobierają opłaty za przechowywanie i transfer danych. Znajomość tej umiejętności może pomóc programistom obniżyć koszty aplikacji i poprawić jej wydajność.
Postępując zgodnie z instrukcjami instalacji i zapoznając się z dostarczonymi przykładami kodu, programiści mogą szybko wykorzystać możliwości IronZIP do łatwego wykonywania zadań związanych z plikami ZIP. W miarę jak coraz więcej aplikacji jest modernizowanych i przenoszonych do chmury, posiadanie niezawodnej biblioteki ZIP, takiej jak IronZIP, wyposaża programistów C# w narzędzia niezbędne do sprostania wymaganiom współczesnego tworzenia aplikacji. Wykorzystaj więc możliwości IronZIP i odkryj nowe możliwości pracy z plikami ZIP w swoich aplikacjach C#.
IronZIP oferuje szerokie wsparcie dla swoich programistów. Aby dowiedzieć się więcej o tym, jak działa IronZIP dla C#, kliknij tutaj. IronZIP oferuje bezpłatną licencję próbną, która stanowi doskonałą okazję do zapoznania się z IronZIP i jego funkcjami.
Iron Software oferuje wiele innych bibliotek. Zapoznaj się z nimi, aby poszerzyć swoją wiedzę i zaktualizować umiejętności w zakresie programowania/tworzenia nowoczesnych aplikacji.
Często Zadawane Pytania
Jak otworzyć plik ZIP w języku C#?
Plik ZIP można otworzyć w języku C# za pomocą biblioteki System.IO.Compression. Alternatywnie, IronZIP zapewnia zaawansowane funkcje obsługi plików ZIP, oferując łatwiejszy i bardziej wydajny sposób zarządzania archiwami.
Jak wyodrębnić pliki z archiwum ZIP za pomocą języka C#?
Dzięki IronZIP możesz wyodrębnić pliki z archiwum ZIP za pomocą metody IronArchive.ExtractArchiveToDirectory. Ta metoda wymaga określenia pliku ZIP oraz katalogu docelowego do wyodrębnienia.
Jakie są zalety korzystania z plików ZIP podczas tworzenia aplikacji?
Pliki ZIP zmniejszają rozmiar plików, co skraca czas przesyłania i umożliwia konsolidację wielu plików w jednym archiwum. IronZIP wzmacnia te zalety dzięki dodatkowym funkcjom, takim jak określanie współczynników kompresji i obsługa wielu formatów.
Jak dodać pliki do istniejącego archiwum ZIP w języku C#?
Aby dodać pliki do istniejącego archiwum ZIP za pomocą IronZIP, należy użyć metody IronArchive.FromFile w celu otwarcia archiwum, a następnie użyć metody Add, aby dołączyć nowe pliki. Aby zakończyć proces, należy zapisać zaktualizowane archiwum.
Czy mogę utworzyć nowy plik ZIP i dodać do niego pliki za pomocą IronZIP?
Tak, w IronZIP można utworzyć nowy plik ZIP, określając ścieżkę archiwum i dodając pliki za pomocą metody Add. Archiwum jest następnie zapisywane za pomocą metody SaveAs.
Jak zainstalować IronZIP za pomocą menedżera pakietów NuGet?
Aby zainstalować IronZIP za pomocą menedżera pakietów NuGet, otwórz menedżera projektów w Visual Studio, wyszukaj IronZIP, wybierz najnowszą wersję i kliknij „Zainstaluj”. Spowoduje to dodanie IronZIP do projektu, umożliwiając zarządzanie plikami ZIP.
Czy IronZIP obsługuje wiele formatów kompresji?
Tak, IronZIP obsługuje wiele formatów kompresji, w tym ZIP, TAR, GZIP i BZIP2, zapewniając elastyczność dostosowaną do różnych potrzeb aplikacji.
Czy dostępna jest bezpłatna wersja próbna IronZIP?
Tak, IronZIP oferuje bezpłatną wersję próbną dla programistów. Możesz zarejestrować się na stronie internetowej Iron Software, aby uzyskać dostęp do wersji próbnej bez konieczności podawania danych karty kredytowej.
Co sprawia, że IronZIP jest odpowiednim wyborem do tworzenia nowoczesnych aplikacji?
IronZIP jest znany ze swojej łatwości obsługi, szybkości i kompatybilności międzyplatformowej. Te cechy, w połączeniu z zaawansowanymi funkcjami, sprawiają, że jest to idealny wybór do tworzenia nowoczesnych aplikacji.




