IRONZIPの使用

C#でZipファイルを開く方法

チャクニット・ビン
チャクニット・ビン
2024年1月4日
共有:

ZIPは、可逆データ圧縮をサポートするアーカイブエントリーファイルシステムフォーマットです。 ZIPファイルには、圧縮された1つ以上のファイルやディレクトリが含まれることがあります。 ZIPファイルフォーマットはいくつかの圧縮アルゴリズムを許可していますが、DEFLATEが最も一般的です。 ZIPフォーマットは、その後すぐに多くのソフトウェアユーティリティによってサポートされるようになった。 トップクラスのOSプロバイダーは、長い間ZIPアーカイブ・サポートを搭載してきた。マイクロソフトはウィンドウズ98からZIPファイルをサポートし、他のOSもそれに続いた。

このブログでは、IronZIPを使用してZIPアーカイブファイルまたは抽出されたファイルを開くための最新で簡単かつ効率的な方法を探ります。 ZIPファイル全般とその利点について学びます。 次に、ZIPファイル・フォーマットを扱うためにシステム・ネームスペースで利用可能なオプションを見てみよう。 次に、ZIPファイルを開き、ZIPファイルを一時フォルダに抽出し、新しいZIPファイルを作成し、既存のZIPファイルにファイルを追加するためのステップバイステップの手順を説明します。

ソフトウェア・アプリケーションでZIPファイルを使用する利点

  1. 圧縮: この技術は、Implode、Deflate、Deflate64、bzip2、LZMA、WavPack、PPMd などのさまざまな圧縮アルゴリズムを使用して、アーカイブされたファイルやフォルダーのサイズを減少させます。

  2. 転送時間の短縮: ファイルサイズが小さいほど、特にインターネット経由でファイルを送信する際の転送時間が速くなります。 これは、電子メールの添付ファイルやウェブサイトからのファイルのアップロードやダウンロードに特に有利である。

  3. ファイルの統合: ZIPファイルは、複数のファイルを単一のアーカイブに統合することができ、管理する必要のあるファイルの数を減らします。 これは、プロジェクトを整理したり、複数のファイルで構成されるソフトウェアを配布したりするのに便利です。

  4. パスワード**保護**:多くのZIPユーティリティは、アーカイブにパスワード保護を追加し、ファイルにセキュリティの層を加えるオプションを提供します。 これは、ZIPファイルの内容へのアクセスを制限したい場合に便利です。

IronZIPを使ったZIPアーカイブの作成とZIPファイルの展開

IronZIPライブラリとドキュメントの紹介はこちらでご覧いただけます。 C#(シーシャープ)アプリケーションでは、様々な方法でZIPファイルを作成し、抽出することができます。 IronZIP NuGetパッケージは、ZIP、TAR、GZIP、BZIP2といった異なるフォーマットでファイルをアーカイブするためのすべての機能を備えています。以下は、IronZIPを使用して、ZIPファイルを開いたり、ZIPファイルを展開したり、新しいZIPファイルを作成したりする次世代アプリケーションを構築するためのサンプルステップです。

ステップ1..NET コアコンソールアプリケーションの作成

プロジェクトの作成

.NETコンソールアプリはVisual Studioで作成できます。 Visual Studioを開き、Create projectを選択する。 ここでは、プロジェクトを作成するためのさまざまなテンプレートを見ることができます。 コードのデモやテストを行う最も簡単な方法は、コンソール・アプリケーションを作成することである。 Console Appプロジェクトのテンプレートを選択します。

C#でZipファイルを開く方法: 図1 - 新しいプロジェクト

プロジェクト名を入力

下のウィンドウでは、プロジェクト名、ファイルシステムに保存するプロジェクトの場所、そして最後の1つはソリューションフォルダへのパスを入力することができます。 ソリューションフォルダとプロジェクトフォルダを同じにすることも、別のフォルダにすることもできる。

C#でZipファイルを開く方法: 図2 - プロジェクトの構成

.NET フレームワークのバージョンを選択します。

次のステップは、プロジェクトの.NETフレームワークのバージョンを選択することです。 特定のバージョンで開発したい場合は、好きなバージョンを指定してください。そうでない場合は、常に最新の安定版を選択してプロジェクトを作成してください。 最新バージョンはマイクロソフト社のウェブサイトからダウンロードできる。次に、Createをクリックしてコンソール・アプリケーションを生成します。

C#でZipファイルを開く方法: 図3 - ターゲットフレームワーク

これにより、テンプレートからデフォルト・プロジェクトが作成され、プロジェクト・ファイルとソリューション・ファイルが指定されたディレクトリに格納されます。 プロジェクトが作成されると、以下のようになります。 最新のバージョンでは、program.csでこのクラスが使われていないことがある。

using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Imports System
' See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!")
Dim MyApp As namespace ' Note: actual namespace depends on the project name.
If True Then
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	internal class Program
'	{
'		static void Main(string [] args)
'		{
'			Console.WriteLine("Hello World!");
'		}
'	}
End If
$vbLabelText   $csharpLabel

新しいZIPファイルを作成し、すべてのZIPアーカイブファイルを展開するには、デフォルトのライブラリからSystem.IO.Compressionを使用することができます。 上記のコードでは、ZipFile.OpenRead および ZipFile.Open の静的メソッドを使用して、ZIP ファイルを開いたり、ZIP ファイルを抽出したりできます。

using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
Imports System.IO.Compression
Console.WriteLine("-----------Zip - Unzip-----------")
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static void AddEntry(string filePath, System.IO.Compression.ZipArchive zipArchive)
'{
'	var file = Path.GetFileName(filePath); ' get file name in var file
'	zipArchive.CreateEntryFromFile(filePath, file);
'}
Dim zip = "myFile.zip"
Using archive As System.IO.Compression.ZipArchive = ZipFile.OpenRead(zip, ZipArchiveMode.Create)
	AddEntry(file1, archive)
	AddEntry(file2, archive)
End Using
Dim dirToExtract = "extract"
If Directory.Exists(dirToExtract) = False Then
	Directory.CreateDirectory(dirToExtract)
End If
ZipFile.ExtractToDirectory(zip, dirToExtract) 'extracted file
$vbLabelText   $csharpLabel

上記のコードでは、myFile.zipという名前のZIPファイルを持っており、システム・ネームスペースを使っている。 OpenRead メソッドは、指定されたモードでZIPファイルを開くために使用されます。 これは、新しいZIPアーカイブファイルを作成するためにも使用できます。 ファイルを開いたら、AddEntry メソッドを使用して新しいアーカイブエントリを追加でき、その後 ExtractToDirectory で ZIP アーカイブファイルまたは選択したファイルを指定したディレクトリに抽出します。 ディレクトリが存在するかどうかがチェックされる。 存在しない場合は、Directory.CreateDirectoryを使用してディレクトリが作成されます。 dirToExtractはZIPアーカイブファイルを抽出するディレクトリパスです。 コードの最後の行ZipFile.ExtractToDirectory(zip, dirToExtract)はZIPファイルを抽出します。すべてのファイルはディレクトリパスに保存されます。

ステップ2.NuGetパッケージマネージャを使ってIronZIPをインストールする

Visual Studioからプロジェクトマネージャを開き、IronZIPパッケージを検索します。 そして最新バージョンを選択し、インストールをクリックする。 ドロップダウンからインストールするバージョンを変更できます。 次にインストールをクリックする。

C#でZIPファイルを開く方法: 図4 - NuGetパッケージマネージャー

IronZIPを使ってZIPアーカイブファイルを作成し、ファイルを追加する。

C#でZipファイルを開く方法: 図5 - IronZIP

IronZIPは、Iron Softwareによって開発されたアーカイブ圧縮および解凍ライブラリです。 広く使われているZIPフォーマットに加え、TAR、GZIP、BZIP2も扱えます。

IronZIP は、正確さ、使いやすさ、スピードを優先するC# ZIPアーカイブライブラリです。 ユーザーフレンドリーなAPIにより、開発者は最新の.NETプロジェクトにアーカイブ機能を数分で簡単に追加できます。

IronZIPSystem.Io.Compressionライブラリと比べて多くの利点があります。 圧縮時に必要な圧縮率を指定したり、異なる圧縮アルゴリズムZIP、TAR、GZIP、BZIP2を使用することもできます。また、モバイル、ウェブ、デスクトッププラットフォームと様々な.NETバージョンをサポートしています。

IronZIPを使ってZIPアーカイブファイルを作成し、ファイルを追加する。

IronZIPには、IronArchiveクラスがあり、ZIPファイルの作成およびZIPファイルの抽出が可能で、単一のライブラリを使用してTAR、GZIP、BZIP2アーカイブファイルの作成もサポートしています。 以下はZIPファイルを作成するコードです。IronArchiveクラスはZIPファイルを作成/開くためのもので、その後アーカイブします。Addメソッドは、以下のようにファイルエントリをアーカイブに追加するために使用されます。

// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

初期ソースコードには、ZIPアーカイブファイル名を指定し、指定されたディレクトリが存在するかどうかをチェックするために必要なセットアップが含まれています。 その後、Add メソッドを使用してファイルをアーカイブし、ZIPファイルを作成します。 圧縮パラメーターの2番目のパラメーターは、低い方が1、高い方が9である。 txtファイルは最大9まで圧縮しても損失はなく、画像ファイルはより低い圧縮率でデータ損失を避けることができます。

IronZIPを使ってZIPアーカイブファイルを開きます。

IronArchive クラスは、ZIPアーカイブファイルからファイルを抽出するためにも使用できます。すべてのファイルは IronArchive.ExtractArchiveToDirectory を使用して抽出され、以下のように特定のディレクトリにすべてのファイルを抽出するのに役立ちます。

var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
Dim extractionPath = "IronZipFiles"
' extract files from zip
If Directory.Exists(extractionPath) = False Then
	Directory.CreateDirectory(extractionPath)
End If
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath)
$vbLabelText   $csharpLabel

上記のコードはZIPファイルをディレクトリに展開する。 このコードでは、ディレクトリが存在するかどうかをチェックし、ZIPアーカイブファイルを指定されたディレクトリに展開します。

ライセンス(無料トライアル利用可能)

上記のコードを動作させるには、ライセンスキーが必要です。 このキーは、appsettings.json に配置する必要があります。

"IronZip.LicenseKey": "your lincese key"
"IronZip.LicenseKey": "your lincese key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronZip.LicenseKey": "your lincese key"
$vbLabelText   $csharpLabel

試用ライセンスは、こちらで登録することで開発者向けに利用可能です。試用ライセンスの取得にはクレジットカードは必要ありません。 メールIDを提供し、無料トライアルに登録できます。

既存のZIPアーカイブファイルにファイルを追加する

既存のアーカイブを開くためには、IronZIP の静的な FromFile メソッドを使用します。このメソッドは、出力として作成される新しいアーカイブのファイル名を指定する必要もあります。

//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
'add to existing archive
Const file3 As String = ".\image3.png"
Dim archivePlusPath = "ironZipPlus.zip"
Using file = IronArchive.FromFile(archivePath, archivePlusPath)
	' Add files
	file.Add(file3)
End Using
$vbLabelText   $csharpLabel

このコードは、既存のZIPファイルを開いて新しいファイルをアーカイブエントリとして追加するために、IronArchive.FromFile静的voidメソッドを使用します。 ファイルが廃棄されると、ファイルは正常に保存される。

更新情報

IronZIPライブラリは、お客様/ユーザーからのフィードバックに基づいて常に更新されており、すべての更新はこちらでご覧いただけます。

結論

結論として、ZIPファイル・プログラミングは、クラウド・ホスト・プロバイダーによってストレージとデータ転送コストが課金される現代のアプリケーション開発で構築するのに不可欠なスキルである。 このスキルを知っていれば、プログラマーはアプリケーションのコストを削減し、アプリケーションのパフォーマンスを向上させることができる。

インストール手順に従い、提供されたコード例を探索することで、開発者はIronZIPの強力さをすぐに活用し、新しいファイルを作成し、Zip/Unzipの作業を簡単に扱うことができます。 より多くのアプリケーションが近代化されてクラウドに移行する中で、IronZIPのような信頼できるZIPライブラリを備えることは、C#開発者にとってモダンなアプリケーション開発の要求を満たすために必要なツールを提供します。 それでは、IronZIPの力を取り入れ、C#アプリケーションでZIPファイルを扱う新しい可能性を開きましょう。

IronZIP は、開発者に対して広範なサポートを提供します。 IronZIP for C# の動作について詳しく知るには、こちらをご覧ください。 IronZIPは、IronZIPとその機能を知るための絶好の機会である無料試用ライセンスを提供しています。

Iron Software にはその他のさまざまなライブラリがあります。それらを探索して、知識を深め、現代アプリケーションをプログラム/開発するスキルを更新しましょう。

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。
< 以前
.NET Coreでファイルを解凍する方法
次へ >
C# .NET CoreでZipファイルを作成する方法