[C#] Zipの圧縮ファイルを解凍するコードを作成する方法
こんにちは。明月です。
この投稿はC#でZipの圧縮ファイルを解凍するコードを作成する方法に関する説明です。
以前、C#でファイルをZipアルゴリズムで圧縮するソースコードに関して説明したことがあります。
link - [C#] Zip圧縮コードを作成する方法
その投稿にも説明しましたが、Zipアルゴリズムは様々なところでよく使うアルゴリズムです。Ionicライブラリと.Net frameworkを利用して圧縮する方法に関して説明しましたが、解凍も同じで作成しましょう。
Ionicライブラリ
Ionicライブラリは外部ライブラリなのでNugetを通ってIonicライブラリをダウンロードと連結をしましょう。
using System;
using System.IO;
using Ionic.Zip;
namespace CS_ZipExtractSource
{
class Program
{
// 解凍する関数
public static void ExtractZipByIonic(string zipPath, string destinationPath)
{
// 解凍するディレクトリが存在するかを確認する。
if (!Directory.Exists(destinationPath))
{
// ディレクトリがなければ作成する。
Directory.CreateDirectory(destinationPath);
}
// zipファイルを読み込む。
using (var zip = new ZipFile(zipPath))
{
// 解凍する。
zip.ExtractAll(destinationPath);
}
}
// 実行関数
static void Main(string[] args)
{
// D:\work\ExtractTest\target.zipファイルをD:\work\ExtractTest\Ionicに解凍する。
ExtractZipByIonic(@"D:\work\ExtractTest\target.zip", @"D:\work\ExtractTest\Ionic");
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
}
zipファイルの状況は下記のイメージになっています。
解凍しましょう。
実行しました。
解凍されました。
.Net Framework内部を利用する方法
先に「System.IO.Commpress」と「System.IO.Comppression.FileSystem」を追加しましょう。
using System;
using System.IO;
using System.IO.Compression;
namespace CS_ZipExtractSource
{
class Program
{
// 解凍する関数
public static void ExtractZipByIO(string zipPath, string destinationPath)
{
// 解凍するディレクトリが存在するかを確認する。
if (!Directory.Exists(destinationPath))
{
// ディレクトリがなければ作成する。
Directory.CreateDirectory(destinationPath);
}
// zipファイルを読み込む。
using (ZipArchive zip = ZipFile.OpenRead(zipPath))
{
// Zipファイルの中でファイルを読み込む。
foreach (ZipArchiveEntry entry in zip.Entries)
{
// 解凍するファイルを設定する。
var filepath = Path.Combine(destinationPath, entry.FullName);
// ディレクトリを取得
var subDir = Path.GetDirectoryName(filepath);
// ディレクトリがあるかを確認する。
if (!Directory.Exists(subDir))
{
// ディレクトリを作成する。
Directory.CreateDirectory(subDir);
}
// entryにディレクトリがある場合は「Name」がありません。
if (String.IsNullOrEmpty(entry.Name))
{
// ディレクトリの場合は飛び越え。
continue;
}
// ファイルを解凍する。
entry.ExtractToFile(filepath);
}
}
}
// 実行関数
static void Main(string[] args)
{
// D:\work\ExtractTest\target.zipファイルをD:\work\ExtractTest\IOに解凍する。
ExtractZipByIO(@"D:\work\ExtractTest\target.zip", @"D:\work\ExtractTest\IO");
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
}
zipファイルの状況は下記のイメージになっています。
解凍しましょう。
実行しました。
Ionicと.Net frameworkにあるライブラリで圧縮することと違ってソースの差異があります。Ionicの場合は圧縮のファイルを読み込んで解凍することではなく、ExtractAllの関数を呼び出しで一括で解凍されます。
標準ライブラリの場合は一つ一つの圧縮ファイルを読み込んでIOで作成することです。
個人的に解凍の場合は標準ライブラリがよいと思います。一つ一つのエラー確認やソース応用が可能することを比べてIonicの場合は解凍ソースはすごく簡単だけど、一つのコントロールが難しいなので様々ところで使いにくいと思います。
ここまでC#でZipの圧縮ファイルを解凍するコードを作成する方法に関する説明でした。
ご不明なところや間違いところがあればコメントしてください。
- [C#] EMailを送信する方法(System.Net.Mail)2020/04/22 19:00:42
- [C#] ini環境ファイルを使う方法2020/04/22 00:09:39
- [C#] 環境設定ファイルを扱う方法(System.Configuration)2020/04/20 19:37:57
- [C#] Reflectionを利用してクラス複製する方法2020/04/17 00:34:33
- [C#] XMLをXPathを利用してデータを取得する方法2020/04/16 00:47:17
- [C#] NSoupライブラリを利用してXMLとHTMLをパーシングする方法2020/04/14 19:34:15
- [C#] 日付フォーマット2020/04/09 20:53:20
- [C#] ログライブラリ(log4net)を設定する方法2020/04/08 13:04:22
- [C#] Zipの圧縮ファイルを解凍するコードを作成する方法2020/04/07 11:17:44
- [C#] Zip圧縮コードを作成する方法2020/04/06 14:56:13
- [C#] 数字フォーマット(お金表示及び小数点以下表示)2020/04/03 00:38:37
- [C#] コマンド(cmd)を実行する方法(Processクラス)2020/03/31 07:15:40
- [C#] FTPに接続してファイルダウンロード、アップロードする方法2020/03/27 19:20:14
- [C#] HttpWebRequestを利用してウェブページを読み込みする方法2020/03/27 00:23:19
- [C#] Base64のエンコード、デコードする方法2020/03/26 02:19:50
- check2024/04/10 19:03:53
- [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
- [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
- [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
- [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
- [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
- [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
- [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
- [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
- [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
- [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
- [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
- [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07