
Archiwa ZIP służą do kompresji i przechowywania jednego lub więcej plików lub folderów w jednym kontenerze. Archiwum ZIP hermetyzuje pliki i foldery, a także przechowuje informacje o ich metadanych. Najczęstszym zastosowaniem archiwizacji jest zmniejszanie rozmiaru plików do przechowywania lub przesyłania oraz stosowanie szyfrowania dla bezpieczeństwa. Oprócz narzędzi do kompresji plików, funkcje automatycznej kompresji/wyodrębniania są również używane w różnych aplikacjach komputerowych i internetowych do przesyłania, pobierania, udostępniania lub szyfrowania plików. Ten artykuł dotyczy również podobnych scenariuszy i przedstawia kilka prostych sposobów kompresowania plików lub folderów oraz programowego tworzenia archiwów ZIP przy użyciu C#.
W tym artykule dowiesz się, jak wykonać następujące operacje archiwizacji ZIP:
- Utwórz archiwum ZIP za pomocą C#
- Dodaj wiele plików do archiwum ZIP
- Dodaj foldery do archiwum ZIP
- Utwórz chronione hasłem archiwum ZIP za pomocą ZipCrypto
- Zaszyfruj archiwum ZIP za pomocą szyfrowania AES
- Ustaw tryb kompresji równoległej
Biblioteka C# ZIP
Aspose.ZIP for .NET to potężne i łatwe w użyciu API do kompresowania lub rozpakowywania plików i folderów w aplikacjach .NET. Zapewnia również techniki szyfrowania AES do szyfrowania plików w formacie ZIP w języku C#. Możesz zainstalować API z NuGet lub pobrać jego pliki binarne z sekcji Downloads.
Utwórz archiwum ZIP w C#
Poniżej przedstawiono kroki, aby skompresować plik, dodając go do archiwum ZIP:
- Utwórz obiekt FileStream dla wyjściowego archiwum ZIP.
- Otwórz plik źródłowy w obiekcie FileStream.
- Utwórz obiekt klasy Archiwum.
- Dodaj plik do archiwum za pomocą metody Archive.CreateEntry(string, FileStream).
- Utwórz archiwum ZIP przy użyciu metody Archive.Save(FileStream).
Poniższy przykładowy kod pokazuje, jak dodać plik do archiwum ZIP przy użyciu języka C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
// Plik do dodania do archiwum
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings()))
{
// Dodaj plik do archiwum
archive.CreateEntry("alice29.txt", source1);
// plik zip
archive.Save(zipFile);
}
}
}
Dodaj wiele plików do archiwum ZIP w C#
Jeśli chcesz dodać wiele plików do archiwum ZIP, możesz to zrobić, korzystając z jednego z następujących sposobów.
C# ZIP Wiele plików przy użyciu FileStream
W tej metodzie klasa FileStream służy do dodawania plików do archiwum ZIP za pomocą metody Archive.CreateEntry(String, FileStream). Poniższy przykładowy kod pokazuje, jak dodać wiele plików do pliku ZIP w języku C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Plik do dodania do archiwum
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
// Plik do dodania do archiwum
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
// Dodaj pliki do archiwum
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik3.txt", source2);
// Spakuj pliki
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
}
}
}
}
C# ZIP Wiele plików przy użyciu FileInfo
Możesz także użyć klasy FileInfo do dodania wielu plików do archiwum ZIP. W tej metodzie pliki zostaną załadowane przy użyciu klasy FileInfo i dodane do archiwum ZIP przy użyciu metody Archive.CreateEntry(String, FileInfo). Poniższy przykładowy kod pokazuje, jak skompresować wiele plików przy użyciu klasy FileInfo w języku C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Pliki do dodania do archiwum
FileInfo fi1 = new FileInfo("alice29.txt");
FileInfo fi2 = new FileInfo("fields.c");
using (var archive = new Archive())
{
// Dodaj pliki do archiwum
archive.CreateEntry("alice29.txt", fi1);
archive.CreateEntry("fields.c", fi2);
// Utwórz archiwum ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Pliki ZIP przy użyciu ścieżki
Zamiast używać klas FileInfo lub FileStream dla wpisów ZIP, możesz podać ścieżkę pliku bezpośrednio do metody Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings). Poniższy przykładowy kod pokazuje, jak zapisywać pliki ZIP przy użyciu ich ścieżki.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
// Utwórz archiwum
using (var archive = new Archive())
{
// Dodaj plik do archiwum ZIP
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Dodaj foldery do archiwum ZIP w C#
Możesz spakować folder za pomocą biblioteki C# ZIP, co może być kolejną alternatywą dodawania wielu plików do archiwum ZIP. Po prostu umieść pliki źródłowe w folderze i dodaj ten folder do archiwum ZIP. Poniżej przedstawiono kroki spakowania folderu w języku C#:
- Utwórz obiekt klasy FileStream dla wyjściowego archiwum ZIP.
- Utwórz instancję klasy Archiwum.
- Użyj klasy DirectoryInfo, aby określić folder do spakowania.
- Użyj metody Archive.CreateEntries(DirectoryInfo), aby dodać folder do ZIP.
- Utwórz archiwum ZIP przy użyciu metody Archive.Save(FileStream).
Poniższy przykładowy kod pokazuje, jak dodać folder do pliku ZIP w języku C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive())
{
// Folder do spakowania
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Utwórz archiwum ZIP
archive.Save(zipFile);
}
}
Utwórz ZIP chroniony hasłem za pomocą ZipCrypto w C#
Możesz chronić archiwa ZIP za pomocą haseł i zastosować szyfrowanie ZipCrypto. W tym celu w konstruktorze Archive używana jest klasa ArchiveEntrySettings, która jako drugi parametr akceptuje typ szyfrowania.
Poniższy przykładowy kod pokazuje, jak utworzyć archiwum ZIP chronione hasłem przy użyciu ZipCrypto w języku C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
{
// Dodaj folder do archiwum
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Utwórz archiwum ZIP
archive.Save(zipFile);
}
}
C# Utwórz chroniony hasłem plik ZIP z szyfrowaniem AES
Aspose.ZIP for .NET pozwala również zastosować szyfrowanie AES w celu ochrony archiwów ZIP. Możesz użyć następujących metod szyfrowania AES:
- AES128
- AES192
- AES256
Aby zastosować szyfrowanie AES, API oferuje klasę AesEcryptionSettings. Poniższy przykładowy kod pokazuje, jak utworzyć chroniony hasłem plik ZIP z szyfrowaniem AES w języku C#.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
{
// Dodaj folder do archiwum
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Utwórz archiwum ZIP
archive.Save(zipFile);
}
}
Ustaw tryb kompresji równoległej
Możesz także skonfigurować interfejs API do kompresji równoległej w przypadku wielu wpisów. W tym celu można określić tryb kompresji równoległej za pomocą klasy ParallelOptions. Aspose.ZIP for .NET udostępnia następujące tryby kompresji równoległej.
- Nigdy — nie kompresuj równolegle.
- Zawsze — kompresuj równolegle (uwaga na brak pamięci).
- Auto — Zdecyduj, czy chcesz stosować kompresję równoległą dla wpisów, czy nie. Ta opcja może kompresować niektóre wpisy tylko równolegle.
Poniższy przykładowy kod pokazuje, jak ustawić tryb kompresji równoległej podczas kompresowania wielu plików za pomocą biblioteki Aspose C# ZIP.
// Aby uzyskać pełne przykłady i pliki danych, przejdź do https://github.com/aspose-zip/Aspose.ZIP-for-.NET
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
{
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
//Zdefiniuj kryterium równoległości
var parallelOptions = new ParallelOptions
{
ParallelCompressInMemory = ParallelCompressionMode.Always
};
archive.Save(zipFile,
new ArchiveSaveOptions()
{
ParallelOptions = parallelOptions,
Encoding = Encoding.ASCII,
ArchiveComment = "There are two poems from Canterbury corpus"
});
}
}
}
}
Dowiedz się więcej o bibliotece C# .NET ZIP
Dowiedz się więcej o naszym C# ZIP API, korzystając z następujących zasobów:
Twórz archiwa ZIP online
Możesz także wypróbować naszą bezpłatną aplikację online, która jest oparta na Aspose.ZIP for .NET, aby skompresować pliki do archiwów ZIP.
Wniosek
W tym artykule nauczyłeś się, jak programowo tworzyć archiwa ZIP w języku C#. Przykłady kodu pokazały, jak dodawać pliki i foldery w archiwach ZIP. Ponadto omówiliśmy również, jak tworzyć archiwa ZIP chronione hasłem za pomocą metod szyfrowania ZipCrypto i AES przy użyciu biblioteki ZIP C# Aspose. Na końcu omówiono również równoległą kompresję wielu wpisów. Jeśli masz jakieś pytania lub wątpliwości, możesz je zadać za pośrednictwem naszego forum.