本連載は、Java言語やその文法は一通り理解しているが、「プログラマー」としては初心者、という方を対象とします。Javaコアパッケージを掘り下げることにより「プログラマーの常識」を身に付けられるように話を進めていきます。今回はアーカイブと圧縮の違いなどの基礎知識とともに、Java APIでJava定番のファイル圧縮形式jarやgzip、zip形式を扱う方法も紹介。
今回はデータの圧縮技術を学んでいきます。データの圧縮技術はさまざまなコンピュータ関連用途において利用されていますが、この記事では「ファイル圧縮」の話題に絞って話を進めていきます。
私たちが普通にOSを利用していると、ファイルの拡張子が「.zip」「.lzh」「.cab」などとなっているファイルを扱うことがあります。これらの拡張子を持つファイルは、複数のファイルやディレクトリを1つのファイルにまとめたもので、そのファイルサイズも、中に含まれるファイルの合計サイズより小さくなっている(圧縮されている)場合があります。
例として、ファイルの拡張子が「.zip」のファイルを取り上げましょう。Windows XPでは、[エクスプローラ]でファイルを選択した後に右クリックし、[送る(N)]→[圧縮 (zip 形式) フォルダ]を選択すると、ファイル拡張子が「.zip」(zip形式)のファイルを作成できます。
この操作を行うと、下記のような圧縮ファイル(圧縮(zip形式)フォルダ)が作成されます(ファイル名はこの例とは異なる結果になる場合があります)。
この圧縮ファイル(圧縮(zip形式)フォルダ)をダブルクリックなどの操作で開くと、圧縮ファイルの中に含まれるファイルやディレクトリを確認できます。
このように、複数のファイルを1つのファイルとしてまとめて扱うことができる機能を「アーカイブ機能」と呼びます(なお、一般的にはアーカイブ機能とファイル圧縮機能の両方を区別せず、単にアーカイブ、圧縮と呼ぶことも多いです)。
逆に、アーカイブから中に含まれるファイルやディレクトリを取り出す処理を、「展開」や「解凍」などと呼びます。Windowsの[エクスプローラ]やJavaのjarコマンドでは「展開」と呼んでいます。
次に、「ファイル圧縮」機能を見ていきましょう。ファイル圧縮の効果が出やすいように、アルファベット「A」が50個の行が1000行からなるテキストファイルを作成します。
いかにも単調な内容ですね。このファイルを、先ほどと同じ手順でzipファイル形式へと圧縮します。
すると、ファイルサイズが50.7kbytesから376bytesへと、劇的に小さくなっていることが分かります。
ファイル圧縮の効果が表れていることがよく分かりますね。
このように、ファイル圧縮を行うと、ファイルサイズを小さくすることができる場合もあります(ファイルの内容によっては、ファイルサイズが小さくならない場合もあります)。
次ページでは、ファイルの展開(解凍)とJava APIによるファイル圧縮を見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.