C#.NETのZIPアーカイブ内のファイルを削除する

.NETアプリケーション内からアーカイブを操作しているときに、ZIP内のファイルを操作する必要がある場合があります。 前の投稿では、ZIPアーカイブにファイル/フォルダーを追加する方法を見てきました。この記事では、C#でプログラムによってZIPアーカイブ内のファイルを削除する方法を学習します。それでは始めましょう。

ZIPアーカイブ内のファイルを削除するC#.NET API

Aspose.ZIP for .NETは、幅広いアーカイブ機能を提供する強力なAPIです。 ZIP、TAR、7z、GZipなどの一般的な形式のアーカイブを作成および操作できます。このAPIを使用して、ZIPアーカイブ内のファイルを動的に削除します。 NuGetまたはダウンロードDLLからAPIをインストールして、手動で参照することができます。

PM> Install-Package Aspose.Zip 

C#でZIPアーカイブ内のファイルを削除する

Aspose.ZIP for .NETを使用して、ZIPアーカイブ内のファイルを削除する方法は2つあります。 1つはファイルのインデックスを使用し、もう1つはArchiveEntryクラスを使用しています。前述の両方の方法の使用方法を見てみましょう。

ArchiveEntryを使用してZIPでファイルを削除する

Aspose.ZIP for .NETは、ZIP内の各ファイル/フォルダーをArchiveEntryオブジェクトとして表し、すべてのファイルとフォルダーがArchiveEntryオブジェクトのコレクションを作成します。したがって、ZIPからファイルを削除するには、関連するArchiveEntryオブジェクトにアクセスしてコレクションから削除します。以下は、C#でZIPアーカイブからファイルを削除する手順です。

  • Archiveクラスを使用してZIPアーカイブをロードします。
  • Archive.Entriesコレクションのエントリをループします。
  • 目的のファイル/フォルダーをフィルター処理して、リストに追加します。
  • Archive.DeleteEntry(ArchvieEntry)メソッドを使用して、リスト内の各エントリを削除します。
  • Archive.Save(string)メソッドを使用して、更新されたZIPアーカイブを保存します。

次のコードサンプルは、C#でZIPアーカイブ内のファイルを削除する方法を示しています。

// ZIPアーカイブをロードする
using (var archive = new Archive("Archives/archive.zip"))
{
    // 削除するファイルを保持するリスト
    List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();

    // ZIPエントリをループする
    foreach(ArchiveEntry entry in archive.Entries)
    {
        // ファイル/フォルダをリストに追加
        if(entry.Name.ToLower().Contains("source"))
        {
            entriesToDelete.Add(entry);
        }
    } 

    // リストされているすべてのエントリを削除します
    foreach(var entry in entriesToDelete)
    {
        archive.DeleteEntry(entry);
    }

    // 更新されたアーカイブを保存
    archive.Save("Archives/updated-archive.zip");
}

インデックスを使用してZIPでファイルを削除する

インデックスを使用してZIPエントリを削除することもできます。以下は、インデックスを使用してZIPアーカイブからファイル/フォルダーを削除する手順です。

  • Archiveクラスを使用してZIPアーカイブをロードします。
  • Archive.DeleteEntry(int)メソッドでインデックスを指定して、ファイルを削除します。
  • Archive.Save(string)メソッドを使用して、更新されたZIPアーカイブを保存します。

次のC#コードサンプルは、インデックスを使用してZIPアーカイブ内のファイルを削除する方法を示しています。

// ZIPアーカイブをロードする
using (var archive = new Archive("Archives/archive.zip"))
{
    // インデックスでファイルを削除
    archive.DeleteEntry(0);

    // 更新されたアーカイブを保存
    archive.Save("Archives/updated-archive.zip");
}

無料のAPIライセンスを取得する

無料の一時ライセンスを取得することで、評価の制限なしにAspose.ZIPfor.NETを使用できます。

結論

この記事では、C#でZIPアーカイブからファイルを削除する方法を学びました。コードサンプルの助けを借りて、ArchiveEntryクラスまたはインデックスを使用してファイルを削除する方法を見てきました。 Aspose.ZIP for .NETの詳細については、ドキュメントにアクセスしてください。また、フォーラムから質問することもできます。

関連項目