- - PR -
ZIPファイル圧縮について
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-06-22 00:44
> org.apache.tools.zip.ZipFileクラスに
> 方法はZipEntryのEnumeration取り出して > ZipFileにZipEntryを引数にしてファイル毎の解凍されたInputStreamがとりだせます。 おおっ! 何時のまにかこんなクラスが増えてたんですね。 御指摘くださって、ありがとうございます。 やはり、こまめにバージョンアップしとかないとダメですね。 # さっき調べてみたら、自宅のマシンに入ってるantは1.5.4でした。 # これではイカンわな(苦笑) |
|
投稿日時: 2004-06-27 15:14
coasmさん
いっきゅう さん 大変ありがとございました。 今回の件は パッケージの差替えで上手く行えました。 以下に実際の圧縮部分の改訂版のソースを記載します。 private void compressFile(File file, File zipfile) throws FileNotFoundException, IOException { try { //ファイルシステムの実際のファイルに接続 FileInputStream fis = new FileInputStream(file); //引数の入力ストリームを後で使用できるように保存 BufferedInputStream bis = new BufferedInputStream(fis); //ファイルに書き込むためのファイル出力ストリームを作成します FileOutputStream fos = new FileOutputStream(zipfile); //新しい ZIP 出力ストリームを作成します ZipOutputStream zos = new ZipOutputStream(fos); zos.setMethod(ZipOutputStream.DEFLATED); //指定された名前で新しい zip エントリを作成します int ind = file.getPath().lastIndexOf('/'); String zipTemp = file.getPath().substring(ind + 1, file.getPath().length()); ZipEntry target = new ZipEntry(zipTemp); zos.putNextEntry(target); int file_length = (int) file.length(); byte buf[] = new byte[file_length]; //0KBのファイルを圧縮しようとした場合 if (file_length == 0) { zos.write(buf, 0, buf.length); } //nKBのファイルを圧縮しようとした場合 else { int count; while ( (count = bis.read(buf, 0, file_length)) != EOF) { zos.write(buf, 0, buf.length); } } bis.close(); // fis より先にクローズすること fis.close(); zos.closeEntry(); zos.close(); // fos より先にクローズすること fos.close(); } 最終的にはこのような形で関数を実装しなおしました。 これだと、ツールからのエラーもなく正常に行えました。 どうもありがとうございました。 |
