質問: in.read(buf, 0, buf.length)) != -1) { out.write(buf, 0, size); } // エントリと入力ストリームを閉じる out.closeEntry(); in.close(); } // 出力ストリームを閉じる out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 大変見やすいコードで早速試しているのですが、以下が困っております。 ⓵【圧縮したいファイル名とその同期元ディレクトリ(ドキュメントルートから見た相対パス】と ⓶【圧縮したzipの同期先ディレクトリ(ドキュメントルートから見た相対パス】】 サンプルコードのargs[0]に⓵を、args[1]に⓶を指定して 実行したのですが、⓵のファイルが圧縮されて⓶に作成されていませんでした。 そもそもこのサンプルはそういった事をするためのものではないのでしょうか・・・ できるできないのご指摘か、他に似たようなサンプルを頂けたら幸いです。 以上、よろしくお願いいたします。 【追記】 申し訳ありません。改めてパスの指定をしたところ、圧縮されたzipが目的のディレクトリに作成いたしました! しかし、解凍してみると、相対パス指定をしたためか、ディレクトリを含めた圧縮になっていました。 例: ⓵ /test/test2/ZipFile.txt ⓶ /test/test3/ZipFile.zip ⓶にできたZipFile.zipを解凍すると testディレクトリから始まったものでした。 これをZipFile.zipだけ圧縮するにはどうしたらよいのか、ご教示いただけたら幸いです。
回答: 圧縮する際にカレントディレクトリを`/test/test2/`とし、圧縮ファイルに`ZipFile.txt`を指定し、 圧縮して出来たファイル`ZipFile.zip`を`/test/test3/`に移動すればいいのではないでしょうか。