Visual Basic(.Net)でのzip解凍について
コマンドプロンプト上で動作する解凍アプリを
Visual Basic上から動作させる方法です。
場合によっては、アプリからzip形式の圧縮/解凍をすることが必要になります。
今回はzipファイルを解凍する方法を記述します。
フリーの解凍アプリは、"7za.exe"を使用しています。
(1)最初に圧縮ファイル(AAA.zip)をプロジェクトのフォルダにコピーしておきます。
(2)解凍先フォルダ名を先に指定しておいて、「解凍」ボタンを押すと解凍します。
(3)指定先フォルダに解凍します。
下記がプログラムになります。
その1
Public sFolder As String '解凍先フォルダ
'*********************************************************************************
'* 解凍ボタンクリックイベント
'*********************************************************************************
Private Sub btnUnzip_Click(sender As System.Object, e As System.EventArgs) Handles btnUnzip.Click
Dim sCommand As String
On Error Resume Next
sFolder = TextBox1.Text
Call CmdExcec()
Console.ReadLine()
End
End Sub
その2
'*********************************************************************************
'* コマンドプロンプトからの応答をファイル出力
'*********************************************************************************
Private Shared Sub p_OutputDataReceived(sender As Object, e As System.Diagnostics.DataReceivedEventArgs)
'出力された文字列を表示する
Console.WriteLine(e.Data)
End Sub
その3
'*********************************************************************************
'* ファイル解凍
'*********************************************************************************
Private Sub CmdExcec()
Dim SDP As New System.Diagnostics.Process()
'入力できるようにする
SDP.StartInfo.UseShellExecute = False
SDP.StartInfo.RedirectStandardInput = True
'非同期で出力を読み取れるようにする
SDP.StartInfo.RedirectStandardOutput = True
AddHandler SDP.OutputDataReceived, AddressOf p_OutputDataReceived
SDP.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
SDP.StartInfo.CreateNoWindow = True
'起動
SDP.Start()
'非同期で出力の読み取りを開始
SDP.BeginOutputReadLine()
'入力のストリームを取得
Dim sw As System.IO.StreamWriter = SDP.StandardInput
If sw.BaseStream.CanWrite Then
'ファイル解凍
sw.WriteLine("7za x -o" & sFolder & " -y " & "AAA.zip")
sw.WriteLine("exit")
End If
sw.Close()
SDP.WaitForExit()
SDP.Close()
End Sub
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
フォームを作成する必要がありますが、その1からその3のサンプルで動作は確認できます。
また、"7za.exe"のオプションを変更すると圧縮もできます。