C1Zipコントロールについて
C1Zipコントロールは、ZIP形式のファイル圧縮・展開機能を提供するコントロールです。ZIPファイルの作成、圧縮ファイルの解凍と一部ファイルの取出し、圧縮ファイルの追加・管理などの操作を行うことができます。また、操作対象はファイルだけでなく、フォルダごとの圧縮・解凍を行うことができます。
さらに、ZIPファイルの操作はディスクに対してだけでなく、メモリやネットワークなど「ストリーム」に対して行うことができます。配列変数で直接処理を行うことができるので、データをいちいちディスクに落とす必要がなく、その分高速な処理を行うことができます。
C1Zipコントロールでの処理は、次の3種類のクラスを使って行われます。
クラス | 説明 |
---|---|
C1ZipFile/C1ZipEntry/C1ZipEntryCollection | ZIPファイルを作成する/開く/管理する操作を行うクラス |
C1ZStreamReader/C1ZStreamWriter | .NETストリーム(メモリ、ファイル、ネットワークの各ストリームなど)でのデータの圧縮/展開を行うクラス |
ZStream | ZlibのC#実装を行うクラス |
C1ZStreamReaderとC1ZStreamWriterクラスは、ZIPファイル内のデータはもちろん、あらゆる.NETストリーム上でデータ圧縮・解凍を行うクラスです。
通常のストリームに付加することで、これらのクラスを介してデータの読み取りと書き込みを行います。従って、例えばADO.NETでデータベースのテーブルデータをそのまま読み込んで直接圧縮したり、ZIPファイルの中の圧縮ファイルを取り出して直接コントロールで表示したり、といった操作が可能になります。
ZIPファイルから画像ファイルを読み込むアプリケーションの作成
では、さっそくこのC1Zipコントロールを使ったアプリケーションを作成しましょう。今回作成するアプリケーションは、次のような機能を持ちます。操作対象のZIPファイルは、画像ファイルだけを格納しているZIPファイルです。
- 画像ファイル(JPEGファイル)を4つ圧縮したZIPファイル「images.zip」を開き、JPEGファイルを1つずつストリームに読み出す
- 読み出したJPEGファイルをPictureBoxコントロールでフォームに表示する
- そのファイル名をLabelコントロールでPictureBoxコントロールの下に表示する
- 画像ファイル以外のファイルを格納しているZIPファイルを指定した場合は、処理を中止する
なお、PictureBox・Labelコントロールはコードから作成します。
GUIのデザイン
デザイン時に作成するフォームと、実行時のフォームのレイアウトは次のようになります。
デザイン時の各コントロールのプロパティは、次のように設定します。
オブジェクト | プロパティ | 設定値 |
---|---|---|
Form1 | Text | ZIPファイルから画像ファイルを読み込むアプリケーション |
Button1 | Text | 画像の取り出し... |
Label1 | Text | "" |
Border | Fixed3D | |
Panel1 | Border | Fixed3D |
Dock | Top | |
Panel2 | Border | Fixed3D |
Dock | Fill | |
OpenFileDialog1 | FileName | *.zip |
Filter | *.zip|*.zip |