ZIPファイル圧縮、展開

需要のありそうな、ファイル/フォルダの圧縮、ZIPファイルの展開を可能にする「ZipFile」フィーチャを解説します。

 

まずは、wscjsfw.jsをテキストエディタで開きます。

ファイルの末尾の方のmainメソッドの

/// =>update section Name=MainProcedure

の下にコードを書いていきます。

 

ファイル/フォルダの圧縮

Windows標準(XP以降)のZipファイル操作機能を使用しています。

以下のコードをmainメソッドに追加してみましょう。

 

 

// 新しいZIPファイルを作成する
var fileName = String.Format("backup_{0:t#yyyyMMddHHmmss}.zip", new Date());
var zipFile = ZipFile.CreateNew($app(fileName));

// フォルダを追加(圧縮)する
zipFile.Append("C:\\work\\data1");
zipFile.Append("C:\\work\\data2");
zipFile.Append("C:\\work\\data3");
// このスクリプトファイルを追加(圧縮)する
zipFile.Append($appf());

 

 

このコードで、C:\work\data1~3のフォルダ、wscjsfw.jsを圧縮します。

ZIPファイルはスクリプトと同じフォルダに「backup_yyyyMMddHHmmss.zip」形式のファイル名で保存されます。

 

ZipFile.CreateNewメソッドで新しいZIPファイルを作成します。

ZipFileオブジェクトのAppendメソッドでファイルまたはフォルダのフルパスを指定し、圧縮をします。

$appや$appfメソッドについては別の機会に解説します。

 

ZIPファイルの展開

ZIPファイルの展開も簡単にできます。

Windows標準(XP以降)のZipファイル操作機能を使用しています。

以下のコードをmainメソッドに追加してみましょう。

 

 

var zipFile = new ZipFile($app("backup.zip"));

 

// ZIPファイルと同じフォルダにフォルダを作って解凍

zipFile.Extract();
// 展開先を指定して解凍

zipFile.Extract($app("展開フォルダ"));

// 展開先が存在する場合、確認を取る

zipFile.Extract($app("展開フォルダ"), true);

 

 

このコードではスクリプトと同じフォルダにある「backup.zip」を展開します。

展開するにはZipFileオブジェクトの「Extract」メソッドを使用します。

上の例では、スクリプトと同じフォルダに

「backup」、「展開フォルダ」フォルダに「backup.zip」の中身が展開されます。

最後の行の展開では、上書き確認メッセージが表示されると思います。

「Extract」メソッドの引数で、展開先や、上書き確認有無のオプションを指定できます。

 

2011.05.05