C#で7Zipアーカイブを作成する

前の投稿では、C#を使用してZIPアーカイブを作成するさまざまな方法について説明しました。この記事では、暗号化されパスワードで保護されたZIPアーカイブを作成する方法についても説明しました。 ZIP形式の他に、7ztarRARなどの一般的に使用されるアーカイブ形式があります。これらの中で、7zアーカイブ形式はオープンソースアーキテクチャに基づいていますまた、高い圧縮率でファイルやフォルダを圧縮するために使用されます。また、256ビットのAES暗号化をサポートし、ファイル名の暗号化も可能にします。この記事では、C#を使用してプログラムで7z(7-Zip)アーカイブを作成する方法を示します。

この記事は次のセクションに分かれています。

この記事のすべての手順とコードサンプルは、Aspose.ZIP for.NETに基づいています。したがって、次のいずれかの方法を使用してAPIをインストールしたことを確認してください。

C#を使用して7z(7-Zip)アーカイブを作成する

ファイルを7zアーカイブに圧縮するシナリオは2つ考えられます。ファイルが1つしかない場合もあれば、圧縮するファイルが多数ある場合もあります。両方のシナリオを明示的に処理できます。

単一エントリで7zアーカイブを作成する

以下は、単一のエントリで7zアーカイブを作成する手順です。

次のコードサンプルは、C#を使用して7z(7-Zip)アーカイブを作成する方法を示しています。

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

複数のエントリで7zアーカイブを作成する

この場合、ファイルをフォルダーに入れ、フォルダーのパスをSevenZipArchive.CreateEntries()メソッドに渡すことができます。以下は、7zアーカイブに複数のファイルエントリを追加する手順です。

次のコードサンプルは、C#を使用して複数のエントリを持つ7zアーカイブを作成する方法を示しています。

using (SevenZipArchive archive = new SevenZipArchive())
{
    archive.CreateEntries(dataDir);
    archive.Save("SevenZip.7z");
}

C#を使用してAES暗号化7zアーカイブを作成する

7z形式は、ファイルを保護するためのAES暗号化をサポートしています。 7zファイルを暗号化するために、SevenZipAESEncryptionSettingsクラスが使用されます。次のコードサンプルは、C#を使用してAES暗号化7zアーカイブを作成する方法を示しています。

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");
}

C#を使用して7zエントリに異なるパスワードを設定する

7z形式では、ファイルエントリごとに異なるパスワードを指定することもできます。たとえば、7zアーカイブ内の2つのファイルを圧縮する場合は、ファイルごとに異なるパスワードを指定できます。以下は、7zエントリに異なるパスワードを設定する手順です。

次のコードサンプルは、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);
    }
}

結論

この記事では、C#を使用してプログラムで7zアーカイブを作成する方法を学びました。さらに、AES暗号化7zファイルを作成し、すべてのファイルエントリにパスワードを設定する方法を見てきました。ファイルの圧縮/解凍について詳しくは、こちらをご覧ください。

関連記事