.NET Framework 4.5 以前では DotNetZip ライブラリを利用して展開処理を実装できます。詳細はこちらの記事を参照してください。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Compression;
namespace DotNetZipArchive
{
public partial class FormZipExtract : Form
{
public FormZipExtract()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
Directory.CreateDirectory("extract");
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Read);
foreach (ZipArchiveEntry ze in za.Entries) {
ze.ExtractToFile("extract\\" + ze.FullName);
textBox1.Text += ze.FullName + "を展開しました\r\n";
}
za.Dispose();
fs.Close();
}
}
}
}
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
//中略
}
Directory.CreateDirectory("extract");
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Read);
ExtractToFile
メソッドを呼び出してファイルを展開します。 foreach (ZipArchiveEntry ze in za.Entries) {
ze.ExtractToFile("extract\\" + ze.FullName);
textBox1.Text += ze.FullName + "を展開しました\r\n";
}
za.Dispose();
fs.Close();
private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
Directory.CreateDirectory("extract");
using (FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open)) {
using (ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Read)) {
foreach (ZipArchiveEntry ze in za.Entries) {
ze.ExtractToFile("extract\\" + ze.FullName);
textBox1.Text += ze.FullName + "を展開しました\r\n";
}
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
Directory.CreateDirectory("extract");
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
try {
ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Read);
try {
foreach (ZipArchiveEntry ze in za.Entries) {
ze.ExtractToFile("extract\\" + ze.FullName);
textBox1.Text += ze.FullName + "を展開しました\r\n";
}
}
finally {
za.Dispose();
}
}
finally {
fs.Close();
}
}
}
ZipFile
クラスのExtractToDirectory
メソッドを利用します。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Compression;
namespace DotNetZipArchive
{
public partial class FormZipExtract : Form
{
public FormZipExtract()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
ZipFile.ExtractToDirectory(openFileDialog1.FileName, "c:\\zip-extract");
}
}
}
}
ZipFile.ExtractToDirectory()
メソッドを呼び出しZIPファイルを展開します。 if (openFileDialog1.ShowDialog() == DialogResult.OK) {
ZipFile.ExtractToDirectory(openFileDialog1.FileName, "c:\\zip-extract");
}
C:\zip-extract
ディレクトリを確認します。選択したZIPファイルがディレクトリに展開されています。