• 締切済み

java.util.zipで作成したアーカイブに、空フォルダを格納したい

java.util.zipで空フォルダを格納したいのですが、思った動作にならず、困ってます。 どうかお助けください。 下のプログラムでは、作成されたcreated.zipを展開すると、その中にmyDirectoryというディレクトリを作成したいのですが、このまま実行すると、展開するときになぜか管理者権限を求められて、そして成功もしません。 問題の場所にDIRECTORYNAME2を指定すると、展開はできるのですが、「指定されたファイル名と同じフォルダが既に存在します」と言われ、スキップを選択するときちんとディレクトリが作成されていますが、きちんとしたZip圧縮ファイルで圧縮した場合、そのようなことは聞かれません。 org.apache.tools.zip.*を使用した場合でも結果は同じでしたので、JDKのバグというのは考えにくい気がしますが・・。 ---------------- プログラム ------------------- final File fCreate = new File("./created.zip"); final String DIRECTORYNAME1 = "myDirectory/"; final String DIRECTORYNAME2 = "myDirectory//"; ZipOutputStream out = new ZipOutputStream(new FileOutputStream(fCreate)); // 問題の場所 ZipEntry dirEntry = new ZipEntry(DIRECTORYNAME1); out.putNextEntry(dirEntry); out.closeEntry(); ZipEntry fileEntry = new ZipEntry("myFile"); out.putNextEntry(fileEntry); out.closeEntry(); out.close();

みんなの回答

回答No.1

空フォルダってzip圧縮できましたっけ? うろ覚えですけど、 他のzipツールで空フォルダ作りたいときは「dummy.txt」とか、何かしら中身を入れて圧縮してたような…。

ggaogg
質問者

お礼

発覚したことをまとめておきます。 1, Vistaで[右クリック→送る→圧縮(Zip)フォルダ]で圧縮したものは、Vistaで[右クリック→展開]で解凍可能(多分他でも可能) 2, Vistaで質問プログラムでZip作成→Vistaで[右クリック→展開]で解凍不可能 3, Vistaで質問プログラムでZip作成→XPで[右クリック→展開]で解凍可能 4, Vistaで質問プログラムでZip作成→Linux(Debian)でunzipで解凍可能 5, XPで質問プログラムでZip作成→Vistaで上記方法で解凍不可能 6, Linuxで質問プログラムでZip作成→Vistaで上記方法で解凍不可能 いずれの環境もJDK、JRE共に1.6を使用しています。 この結果を見る限り、Vistaの展開操作だけが違ったふるまいをしているように見えます。 Vista環境の方いましたら、2番だけでも成功するかどうか実験お願いします。

ggaogg
質問者

補足

以下のことが発覚しました。 VistaでZip作成→XPで解答可能 XPでZip作成→Vistaで解答不可能 私の質問→みなさん回答不可能なのでしょうか。 それともバグなのでしょうか。

関連するQ&A