W poprzednim poście omówiłem różne sposoby tworzenia archiwów ZIP przy użyciu C#. W artykule omówiono również sposób tworzenia zaszyfrowanych i chronionych hasłem archiwów ZIP. Oprócz formatu ZIP istnieje kilka innych powszechnie używanych formatów archiwów, takich jak 7z, tar, RAR itp. Wśród nich format archiwum 7z jest oparty na architekturze open source i służy do kompresji plików i folderów o wysokim współczynniku kompresji. Obsługuje również 256-bitowe szyfrowanie AES i umożliwia również szyfrowanie nazw plików. W tym artykule pokażę, jak programowo tworzyć archiwa 7z (7-Zip) przy użyciu języka C#.
Ten artykuł jest podzielony na następujące sekcje:
- Utwórz archiwum 7z (7-Zip) przy użyciu języka C#
- Utwórz zaszyfrowane archiwum 7z AES przy użyciu języka C#
- Ustaw różne hasła dla wpisów 7z za pomocą C#
Wszystkie kroki i przykłady kodu w tym artykule są oparte na Aspose.ZIP dla platformy .NET. Dlatego upewnij się, że zainstalowałeś interfejs API przy użyciu jednej z następujących metod:
- Zainstaluj za pomocą Menedżera pakietów NuGet.
- Ściągnij DLL and add its reference to the project.
Utwórz archiwum 7z (7-Zip) przy użyciu języka C#
Mogą istnieć dwa możliwe scenariusze kompresji plików do archiwum 7z. Albo masz tylko jeden plik, albo może być kilka plików do skompresowania. Możesz wyraźnie poradzić sobie z obydwoma scenariuszami.
Utwórz archiwum 7z z pojedynczym wpisem
Poniżej przedstawiono kroki tworzenia archiwum 7z z jednym wpisem.
- Otwórz nowy FileStream, aby utworzyć plik 7z.
- Utwórz instancję klasy SevenZipArchive.
- Dodaj plik do archiwum za pomocą metody SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Utwórz i zapisz archiwum metodą SevenZipArchive.Save(Stream).
Poniższy przykładowy kod pokazuje, jak utworzyć archiwum 7z (7-Zip) przy użyciu języka C#.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
Utwórz archiwum 7z z wieloma wpisami
W takim przypadku możesz umieścić pliki w folderze i przekazać ścieżkę do folderu metodzie SevenZipArchive.CreateEntries(). Poniżej przedstawiono kroki dodawania wielu wpisów plików do archiwum 7z.
- Utwórz instancję klasy SevenZipArchive.
- Przekaż ścieżkę folderu do metody SevenZipArchive.CreateEntries(String, Boolean).
- Wywołaj metodę SevenZipArchive.Save(String).
Poniższy przykładowy kod pokazuje, jak utworzyć archiwum 7z z wieloma wpisami przy użyciu języka C#.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
Utwórz zaszyfrowane archiwum 7z AES przy użyciu języka C#
Format 7z obsługuje szyfrowanie AES w celu zabezpieczenia plików. Do zaszyfrowania pliku 7z używana jest klasa SevenZipAESEncryptionSettings. Poniższy przykładowy kod pokazuje, jak utworzyć archiwum 7z z szyfrowaniem AES przy użyciu języka C#.
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.7z");
}
Ustaw różne hasła dla wpisów 7z za pomocą C#
Format 7z umożliwia również określenie innego hasła dla każdego wpisu pliku. Na przykład, jeśli zamierzasz skompresować dwa pliki w archiwum 7z, możesz określić inne hasło dla każdego pliku. Poniżej przedstawiono kroki, aby ustawić różne hasła dla wpisów 7z.
- Utwórz nowy FileStream dla pliku archiwum 7z.
- Uzyskaj dostęp do każdego wpisu pliku za pomocą klasy FileInfo.
- Utwórz instancję klasy SevenZipArchive.
- Utwórz wpis w archiwum 7z za pomocą SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Zapisz archiwum metodą SevenZipArchive.Save(Stream).
Poniższy przykładowy kod pokazuje, jak ustawić hasło dla każdego wpisu w archiwum 7z.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
archive.Save(sevenZipFile);
}
}
Wniosek
W tym artykule dowiedzieliśmy się, jak programowo tworzyć archiwa 7z przy użyciu języka C#. Ponadto widzieliśmy, jak tworzyć pliki zaszyfrowane AES 7z i ustawić hasło dla każdego wpisu pliku. Możesz dowiedzieć się więcej o kompresji/dekompresji plików z tutaj.