C# Zipファイルの圧縮/解凍のサンプル

C#のZipファイルの圧縮と解凍(展開)のサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

参照 参照の追加
サンプル zipファイルに圧縮する(ZipFileクラス)
  zipファイルを解凍する(ZipFileクラス)

参照の追加

Zipの圧縮と解凍で使用するZipFileクラスを使用する場合は、System.IO.Compression.FileSystemを参照します。

System.IO.Compression.FileSystemを選択します。

zipファイルに圧縮する(ZipFileクラス)

public static void CreateFromDirectory(
    string sourceDirectoryName,
    string destinationArchiveFileName,
    CompressionLevel compressionLevel,
    bool includeBaseDirectory,
    Encoding entryNameEncoding)

指定したフォルダ配下にあるファイルすべてをzip化するサンプルです。

using System.IO.Compression;

class Test1
{
	static void Main()
	{
		string startPath = @"d:\ZipTest1";
		string zipPath = @"D:\test1\テスト.zip";

		ZipFile.CreateFromDirectory(
							startPath,
							zipPath,
							CompressionLevel.Optimal,
							false,
							System.Text.Encoding.GetEncoding("Shift_JIS"));
	}
}

1行目は、System.IO.Compressionをインポートしています。必須です。

7行目は、zip化対象のフォルダで中にファイルがあるとします。ファイルは複数可です。
8行目は、zip化後のパスとファイル名です。
10行目は、ZipFileクラスのCreateFromDirectoryメソッドでzipを作成しています。

13行目は、圧縮のオプションです。Optimalは圧縮サイズを重視します。Fastestは速度を重視します。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.compression.compressionlevel?view=netframework-4.8

14行目は、Falseにすると解凍後のフォルダ名は8行目のファイル名のテストです。Trueにすると7行目のZipTest1になります。
15行目は、解凍後のファイル名の文字コードの指定です。

zipファイルを解凍する(ZipFileクラス)

public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName);

zipファイルを指定したフォルダ配下に解凍するサンプルです。

using System.IO.Compression;

class Test1
{
	static void Main()
	{
		string zipPath = @"D:\test1\テスト.zip";
		string extractPath = @"d:\ZipTest1";
	
		ZipFile.ExtractToDirectory(zipPath, extractPath);
	}
}

1行目は、System.IO.Compressionをインポートしています。必須です。

7行目は、zipファイルです。
8行目は、zip解凍後のパスです。
10行目は、ZipFileクラスのExtractToDirectoryメソッドでzipファイルを解凍しています。

解凍後のファイルサイズとファイル名に注意します。必要であればチェックを行います。

関連の記事

C# テキストファイルの読み書きのサンプル

△上に戻る