Zip形式のファイルを展開するサンプルコードです。ZIP形式のファイルの展開は「java.util.zip.ZipInputStream」を「FileInputStream」に連結して行います。
「ZipInputStream」は「FileInputStream」など他の入力ストリームに接続して使用します。ZIPファイルに含まれるファイルは「ZipEntry」クラスとして、「ZipInputStream」から取得することができます。Zipエントリの取出しは、getNextEntry()メソッド行います。エントリを取り出したら、read()メソッドでそのエントリからデータを読みます。読み取りがエントリの終端に達したら、-1が返されます。ZipEntryクラスのgetName()メソッドで返されるエントリ名は上位階層のディレクトリを含む、相対パスになっています。ディレクトリ構成を復元する場合は、あらかじめディレクトリを作成しておく必要があります。ZipEntryの名前に日本語が含まれていた場合は、文字化けが発生します。これはZipEntryの名称が強制的にUnicodeとして扱われるためです。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipFile {
public static void main(String[] args) {
System.out.println("--処理開始--");
if(args.length < 2)
{
System.out.println("コマンドライン引数を指定してください");
return;
}
ZipInputStream in = null;
BufferedOutputStream out = null;
try
{
in = new ZipInputStream(new BufferedInputStream(new FileInputStream(args[0])));
ZipEntry zipEntry = null;
int data = 0;
while( (zipEntry = in.getNextEntry()) != null )
{
System.out.println(zipEntry.getName());
new File(args[1] + "\\" + zipEntry.getName()).getParentFile().mkdirs();
out = new BufferedOutputStream(new FileOutputStream(args[1] + "\\" + zipEntry.getName()));
while( (data = in.read()) != -1 )
{
out.write(data);
}
in.closeEntry();
out.close();
out = null;
}
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println(e);
}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();
}
finally
{
if(in != null)
{
try
{
in.close();
}catch(Exception e){ System.out.println(e); }
}
if(out != null)
{
try
{
out.close();
}catch(Exception e){ System.out.println(e); }
}
}
System.out.println("--処理終了--");
}
}
ちょっと一休み. Javaキーワード並び替えゲーム
画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。
ユーザ登録をしてログインするとランキングに参加できます。