フッターコンテンツにスキップ
.NETヘルプ

SevenZip C# (開発者向けの仕組み)

ファイル入力の圧縮およびアーカイブユーティリティの分野で、7-Zipは多用途でオープンソースのソリューションとして際立っています。 高い圧縮率とさまざまなアーカイブ形式のサポートで知られる7-Zipは、効率的なファイル管理を求めるユーザーにとって人気の選択肢となっています。 この記事では、7-Zipとは何か、どのように動作するのか、その主な機能、独自の7z形式、圧縮率、C#での7zアーカイブ作成を支援する.NET SDKについて探ります。 さらに、.NETエコシステムでの代替ソリューションとしてIronZIPを紹介します。

7-Zipとは?

7-Zipは、ユーザーがファイルを圧縮および解凍できる無料のオープンソースのファイルアーカイバーユーティリティです。 イゴール・パブロフによって開発された7-Zipは、幅広い圧縮形式をサポートし、データの管理と整理に多用途のツールとなっています。

Sevenzip C#(開発者向けの動作方法) 図1 - 7-Zip

主な機能

  • 高圧縮率: 7-Zipの主な機能の1つは、高い圧縮率を達成できることで、しばしば他のアーカイブツールを上回ります。 これにより、ストレージスペースの大幅な節約とフォルダへのファイル転送の高速化が可能になります。
  • 幅広いフォーマットのサポート: 7-Zipは、7z、ZIP、TAR、GZIPなど、さまざまなアーカイブ形式を扱うことができます。 この多様性により、さまざまなオペレーティングシステムおよびソフトウェアとの互換性が保証されます。
  • 暗号化およびセキュリティ: 7-Zipは強力な暗号化機能を提供し、ユーザーはAES-256暗号化でアーカイブを保護できます。 これにより、機密データが保護されたままであることが保証されます。
  • コマンドラインサポート: ユーザーフレンドリーなグラフィカルインターフェースに加え、7-Zipはファイル管理タスクで自動化やスクリプトを好むユーザーのためにコマンドラインバージョンを提供します。

このコード例は、Excelの入力を自動化するためのIronXL APIの簡便性と強力さを示しています。

7-Zipは高度な圧縮アルゴリズムを使用して、ファイルやフォルダのサイズを縮小します。 そのネイティブな7z形式にLZMA(Lempel-Ziv-Markov chain-Algorithm)圧縮アルゴリズムを使用しており、それによって印象的な圧縮率を実現しています。 ユーティリティはまた、ZIP、TAR、GZIPなどの他の一般的な形式もサポートしています。

7z形式

7z形式は、7-Zipがそのアーカイブに使用する独自の形式です。 LZMA圧縮アルゴリズムを採用しており、優れた圧縮率で知られています。 7z形式は、ソリッド圧縮、ファイル分割、自己解凍アーカイブなどの機能をサポートしています。

圧縮率

7-Zipは、その素晴らしい圧縮率で知られており、特にLZMAアルゴリズムを使用した7z形式では顕著です。 この効率性は、圧縮ファイルの完全性を損なうことなく小さなアーカイブサイズを実現します。 7-Zipによって作成されたファイルは、通常のZIP形式よりも30〜70%良好に圧縮されます。

7-Zip LZMA SDK for C#

C#で作業する開発者にとって、7-Zipは.NET SDKを提供し、カスタムアプリケーションに7-Zipの機能をシームレスに統合できます。 SDKを使用すると、開発者は圧縮および解凍操作をプログラムで実行でき、C#プロジェクト内でのアーカイブファイル管理に柔軟性を提供します。

C#アプリケーションで7-Zipを使用したい場合は、7-Zip SDKを使用するか、C#コード内でコマンドライン実行ファイルを利用することができます。 両方のアプローチの概要は以下の通りです。

1. 7-Zip SDK (7z.dll)

7-Zip SDKには、C#プロジェクトで使用可能な7z.dllライブラリが含まれています。 このアプローチでは、圧縮および解凍操作をプログラムで実行することができます。

以下は7-Zip SDKを使用したソースコードの例です:

using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
Imports SevenZip

Friend Class Program
	Shared Sub Main()
		' Specify the path to the 7z.dll library
		SevenZipBase.SetLibraryPath("path_to_7z.dll")

		' Example: Extract files from an archive
		Using extractor = New SevenZipExtractor("archive.7z")
			extractor.ExtractArchive("output_directory")
		End Using

		' Example: Compress files into an archive
		Using compressor = New SevenZipCompressor()
			' Add files to the archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

"path_to_7z.dll"を7z.dllライブラリの実際のパスに置き換えてください。 7z.dllファイルは、7-Zipインストールディレクトリにあります。

2. コマンドライン実行ファイル

別の方法として、C#ソースコードで7-Zipのコマンドライン実行ファイル(7z.exe)をSystem.Diagnostics.Processクラスを通じて呼び出すことができます。

using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		' Example: Extract files from an archive using the command-line executable
		Dim archivePath As String = "archive.7z"
		Dim outputPath As String = "output_directory"
		Dim processStartInfo As New ProcessStartInfo With {
			.FileName = "7z.exe",
			.Arguments = $"x ""{archivePath}"" -o""{outputPath}""",
			.RedirectStandardOutput = True,
			.UseShellExecute = False,
			.CreateNoWindow = True
		}
		Using process As New Process With {.StartInfo = processStartInfo}
			process.Start()
			process.WaitForExit()
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

"7z.exe"がシステムのPATHにあるか、FileNameプロパティに実行可能ファイルへのフルパスを提供してください。

IronZIP を使用すると、開発者は ZIP アーカイブを作成し、既存の ZIP ファイルからデータを抽出し、迅速かつ正確さを重視して他の形式をシームレスに処理できます。

7-Zipは強力なソリューションですが、.NETエコシステム内の代替を探索する開発者にとって、IronZIPは説得力のある選択となる可能性があります。IronZIPは、C#アプリケーション内でアーカイブを圧縮、解凍、および操作するためのツールを開発者に提供する.NET圧縮ライブラリです。

Sevenzip C#(開発者向けの動作方法) 図2 - IronZIP

IronZIPは、.NETアプリケーションでZIPファイルを扱いやすくする強力なC# ZIPアーカイブライブラリです。 そのユーザーフレンドリーなAPIを使えば、開発者は効率的にZIPアーカイブを作成、読み取り、抽出することができます。 以下は、IronZIPを使用してZIPアーカイブを作成する際の簡単なコードスニペットです:

using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main()
		' Specify the path for the new ZIP archive
		Dim zipFilePath As String = "output.zip"

		' Create an empty ZIP archive
		Using archive = New IronArchive(zipFilePath)
			' Add files to the ZIP
			archive.AddArchiveEntry("./assets/file1.txt")
			archive.AddArchiveEntry("./assets/file2.jpg")
			archive.AddArchiveEntry("./assets/file3.pdf")
		End Using

		Console.WriteLine("ZIP archive created successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronZIPとその機能、またはコード例についての詳細は、IronZIPドキュメントページをご覧ください。

結論

7-Zipは、ファイル圧縮の世界において引き続き支配的な力を持ち、優れた圧縮率でオープンソースで豊富な機能を持つソリューションをユーザーに提供しています。 さまざまなアーカイブ形式のサポートと強力な暗号化機能により、一般ユーザーと開発者の両方に多用途の選択肢となっています。.NET SDKは、C#開発者にそのユーティリティをさらに拡張し、カスタムアプリケーションへのシームレスな統合を容易にしています。 .NETスペースで代替を探している場合には、IronZIPがC#開発者の特定のニーズに合わせた同様の機能を提供する注目すべき競争相手として際立っています。

IronZIPはIronZIPの無料トライアルを提供しています。 IronZIP .NET CoreおよびFrameworkライブラリは、IronZIPダウンロードページからダウンロードしてお試しください。

よくある質問

7-Zipとは何か、そしてなぜ人気があるのか?

7-Zipは、高圧縮率と7z、ZIP、TAR、GZIPといった複数のアーカイブフォーマットに対応したオープンソースのファイルアーカイバーユーティリティです。データ管理の効率性と強力なAES-256暗号化によるセキュリティで人気があります。

7zフォーマットは他のフォーマットとどう違うのですか?

7zフォーマットはLZMA圧縮アルゴリズムを使用し、通常のZIPフォーマットより30〜70%優れた圧縮効率を提供します。これにより、ファイルサイズ削減を優先するユーザーに理想的です。

開発者はC#プロジェクトでどのようにして7-Zipを利用できますか?

開発者は7-Zip .NET SDKを利用することで、7z.dllライブラリを含んだ圧縮および解凍機能をC#アプリケーションにプログラムで統合できます。あるいは、コマンドラインツール7z.exeを使用してアーカイブを管理することもできます。

IronZIPは.NETアプリケーションにおいてどのような利点を提供しますか?

IronZIPは.NETアプリケーション用にユーザーフレンドリーなAPIを提供し、ZIPファイルの作成、読み取り、および抽出を簡素化します。C#プロジェクトで使いやすさと堅牢なZIPファイル管理機能を求める開発者にとって有効な代替手段です。

7-Zipをファイルの暗号化に使用できますか?

はい、7-ZipはAES-256を使用した強力な暗号化機能を提供し、ユーザーがファイルを安全に暗号化し、圧縮中に機密データを保護することができます。

7-Zipの主な機能は高圧縮率など

はい、IronZIPは無料試用版を提供しており、Webサイトからダウンロード可能です。この試用版では開発者がその機能を探り、.NETアプリケーションでのZIPファイル管理を統合することができます。

7-Zipの主な機能は何ですか?

7-Zipの機能には高圧縮比、幅広いフォーマットのサポート、強力なAES-256暗号化、使いやすいインターフェースと多様なユーザーのニーズに対応するコマンドラインサポートがあります。

C#アプリケーションでファイルアーカイブをどのように使用できますか?

7z.dllを含んだ7-Zip SDKや、包括的なファイル圧縮および抽出ツールを提供するIronZIPなどのライブラリを使用することで、C#アプリケーションでファイルアーカイブを利用できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。