Java言語 I 実習 第10週

ファイルの圧縮とアーカイブの作成
java.util.zip パッケージ

java.util.zipパッケージのクラスを使って、 ファイルを圧縮したり、アーカイブを作成するアプリケーションの開発を練習します。

準備:

Javaのプログラムの練習用のディレクトリを用意してください。 その中に移動して以下の作業を行いなさい。
この後のプログラムの動作を確認するために zip形式のアーカイブ・ファイルが 必要です。 たとえば、JDKに付いてくる src.zip のようなファイルを 作業ディレクトリに用意しておいてください。 学内の人は、次のようにしてファイルをコピーしなさい。


 cp  /usr/local/java/src.zip  .

基本課題 1:

「zipアーカイブ内のエントリーを表示する」

  1. java.util.zip.ZipFileクラスを利用して、 zipアーカイブ内のエントリーの一覧を標準出力に出力するプログラムを作ります。 ソース・プログラム ZipSearch.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  ZipSearch  src.zip
    

基本課題 2-1:

「zipアーカイブ内のエントリーの内容を表示する(1)」

  1. java.util.zip.ZipInputStreamクラスを利用して、 zipアーカイブ内のエントリーの一覧を標準出力に出力するプログラムを作ります。 ソース・プログラム ZipCat.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  ZipCat  src.zip  "src/java/lang/Runnable.java"
    

基本課題 2-2:

「zipアーカイブ内のエントリーの内容を表示する(1)」

  1. java.io パッケージのところで練習したバッファリングを 専用のクラスで取り扱う方法で、上のプログラムを書き直してみます。 ソース・プログラム ZipCat2.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  ZipCat  src.zip  "src/java/lang/Thread.java"
    

基本課題 3:

「zipアーカイブ内のエントリーを復元する」

  1. 上のプログラムの出力先をファイルにすることで、 アーカイブからファイルを復元するプログラムを作成します。 ソース・プログラム ZipGet.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。 ディレクトリ構造も含めて、目的のファイルが得られることを確認しなさい。

    
      java  ZipGet  src.zip  "src/java/awt/Image.java"
    

基本課題 4:

「zipアーカイブの展開」

  1. 上のプログラムをさらに発展させて、 アーカイブ内の全ファイルを復元するプログラムを作成します。 ソース・プログラム UnZip.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。 ディレクトリ構造も含めて、目的のファイルが得られることを確認しなさい。

    
      java  UnZip  src.zip
    

基本課題 5:

「zipアーカイブの作成」

  1. java.util.zip.ZipOutputStreamクラスを利用して、 zipアーカイブを作成するプログラムを作ります。 (簡単のため、ここでは単独のファイルを保存するだけですが、 原理的には複雑なディレクトリ構造も含めて、複数のファイルを アーカイブ化することが可能です。) ソース・プログラム SimpleZip.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  SimpleZip  SimpleZip.java
    

基本課題 6:

「GZip形式の圧縮を行う」

  1. java.util.zip.GZIPOutputStreamクラスを利用して、 GZip形式の圧縮を行うプログラムを作ります。 ソース・プログラム GZip.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  GZip  GZip.java
    

基本課題 7:

「GZip形式のファイルの内容を表示する」

  1. java.util.zip.GZIPInputStreamクラスを利用して、 GZip形式のファイルの内容を標準出力に出力するプログラムを作ります。 ソース・プログラム GZipCat.java を作成しなさい。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドでたとえば次のようにプログラムを実行しなさい。

    
      java  GZipCat  GZip.java.gz
    

応用課題 1:

基本課題 6,7:のプログラムを元にして、 GZip形式のファイルを元に戻すプログラム GunZipを作成しなさい。 (元の .gz 形式のファイルは消去するようにしてください。)

応用課題 2:

基本課題 5:のプログラムを元にして、 指定したディレクトリ内のファイル及びサブディレクトリ内のファイルを すべてリカーシブに単一のアーカイブファイルに保存するプログラム Zip を 作成しなさい。 (元のファイルは消去しないで残すようにしてください。)


実習の目次  今週の講義の内容