.NET ヘルプ

SevenZip C#(開発者向けの動作方法)

更新済み 12月 24, 2023
共有:

イントロダクション

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

SevenZipとは何ですか?

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

Sevenzip C#(開発者向けの仕組み)図1 - 7-Zip

主な機能

  • 高圧縮率: 7-Zipの主要な特徴の一つは、高圧縮率を実現できる能力であり、しばしば他のアーカイブツールを上回ります。 これは、ストレージスペースの大幅な節約やフォルダへのファイル転送の高速化をもたらす可能性があります。
  • 幅広いフォーマット対応: 7-Zipは、7z、ZIP、TAR、GZIPなど、さまざまなアーカイブフォーマットに対応しています。 この汎用性により、異なるオペレーティングシステムやソフトウェアとの互換性が確保されます。
  • 暗号化とセキュリティ: 7-Zipは強力な暗号化機能を提供し、ユーザーがAES-256暗号化でアーカイブを保護できるようにします。 これにより、機密データが保護されることが保証されます。
  • コマンドラインサポート: 使いやすいグラフィカルインターフェイスに加えて、7-Zipはファイル管理タスクの自動化やスクリプティングを好むユーザー向けにコマンドライン版も提供しています。

動作方法

7-Zipは、ファイルやフォルダーのサイズを削減するために、先進的な圧縮アルゴリズムを利用しています。 LZMA 圧縮アルゴリズムを採用しています。 (レムペル-ジヴ-マルコフチェイン・アルゴリズム) ネイティブの7z形式の圧縮アルゴリズムにより、優れた圧縮率を実現しています。 そのユーティリティは、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はカスタムアプリケーションに7-Zip機能をシームレスに統合することを可能にする.NET SDKを提供しています。 このSDKは、開発者が圧縮および解凍操作をプログラムにより実行できるようにし、C#プロジェクト内でアーカイブされたファイルを柔軟に管理することができます。

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

1. 7-Zip SDK

7-Zip SDKは、7-Zipファイル圧縮および解凍機能にアクセスするためのソフトウェア開発キットです。このSDKを使用することで、開発者は自分のアプリケーションに7-Zipの圧縮および解凍機能を簡単に統合することができます。 (7z.dll)

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

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

using SevenZip;
class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // 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 File entry in 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");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // 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 File entry in 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")
		' Create a SevenZipExtractor or SevenZipCompressor instance
		' Perform compression or decompression operations as needed
		' 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 File entry in archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
VB   C#

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

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

あるいは、7-Zipコマンドライン実行ファイルを使用することもできます。 (7z.exe) C#のソースコード内で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
VB   C#

「7z.exe」がシステムのPATHに含まれていることを確認するか、FileNameプロパティに実行ファイルへのフルパスを指定してください。

IronZIP のご紹介

7-Zipは強力なソリューションですが、.NETエコシステム内で代替案を模索する開発者は、IronZIPが魅力的な選択肢であることに気づくかもしれません。 IronZIP は、開発者がC#アプリケーション内でアーカイブを圧縮、解凍、および操作するためのツールを提供する、7-Zipに似た機能を持つ.NET圧縮ライブラリです。

7zip C# (開発者向けの仕組み) 図2 - IronZIP

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

using IronPdf;

var Renderer = new HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
PDF.SaveAs("output.pdf");
using IronPdf;

var Renderer = new HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
PDF.SaveAs("output.pdf");
Imports IronPdf

Private Renderer = New HtmlToPdf()
Private PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
PDF.SaveAs("output.pdf")
VB   C#

これだけです。IronPDFを使えば、HTMLをPDFに変換するのはとても簡単です。 ZIPアーカイブの作成 IronZIPを使用:

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
VB   C#

IronZIPの機能やコード例に関する詳細情報については、以下のサイトをご覧ください。 ドキュメント ページ

結論

7-Zipは、ファイル圧縮の世界で依然として支配的な存在であり、ユーザーにオープンソースで豊富な機能を持つ解決策と、卓越した圧縮率を提供しています。 その多様なアーカイブ形式のサポートと強力な暗号化機能により、カジュアルなユーザーと開発者の両方にとって多用途の選択となります。.NET SDKは、C#開発者向けにその実用性をさらに拡張し、カスタムアプリケーションへのシームレスな統合を促進します。 .NET環境で別の選択肢を探している方には、IronZIPが注目に値する候補となります。これはC#開発者の特定のニーズに合わせた同様の機能を提供します。

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

< 以前
Mailkit C#(開発者向けの仕組み)
次へ >
ByteSize C#(開発者向けの仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >