• 締切済み

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();

  • ggaogg
  • お礼率86% (209/243)
  • Java
  • 回答数1
  • ありがとう数3

みんなの回答

回答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

  • zipフォルダの解凍

    いつもお世話になっています。 zipフォルダ実行時のことで質問します。 指定のファイルをzipフォルダに格納して、フォルダ名を指定して格納することはできました。 それで、逆に、zipフォルダにどんなファイルがあるかを確かめたいと思ったのですが、可能なのでしょうか? zipフォルダに格納できたので、それを逆に変えてしようとしたのですが、いまいちわかりません。 zipフォルダに格納したソースは以下です。 import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipOutStream_Test { public static void main(String[] args) throws Exception { File zipf = new File("D:/zip_Java.zip"); //zipファイルに埋め込むfile名 File[] files = { new File("directory.txt") }; ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipf)); try { encode(zos,files); } catch (IOException e) { }catch(Exception e) { }finally { zos.close(); } } static byte[] buf = new byte[1024]; public static void encode(ZipOutputStream zos, File[] files) throws Exception { for(File f: files) { if(f.isDirectory() ) { encode(zos, f.listFiles() ); }else { ZipEntry ze = new ZipEntry(f.getPath().replace('\\', '/')); zos.putNextEntry(ze); InputStream is = new BufferedInputStream(new FileInputStream(f)); for (;;) { int len = is.read(buf); if (len < 0) break; zos.write(buf, 0, len); } is.close(); } } } } 宜しくお願いします。

    • ベストアンサー
    • Java
  • JAVAでZIP圧縮を行うプログラムを作成したのですがXPの標準機能で解凍できません。

    org.apache.tools.zip.ZipEntry; org.apache.tools.zip.ZipOutputStream; を使用しZIP圧縮を行うプログラムを作成し無事に圧縮に成功し 解凍ソフトを使用すると解凍もうまくいくのですが windowsXPの標準で開こうとすると開くことができません。 また、解凍ソフトによっても解凍できないものもあります。 圧縮時に何か特別なことをおこなわないとならないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 圧縮 zip形式 フォルダーを作成できません

    使用PC Win7 pro 64bit 外付けHDD(buffalo hd-hx1.5tu3)のファイルを 圧縮zipフォルダで作成(ファイル右クリック→送る→圧縮zipフォルダ) しようとすると ”この場所に圧縮 (zip 形式) フォルダを作成できません。代わりにデスクトップに作成しますか?” と出てしまいます。 どうすれば、同じフォルダ内に圧縮zipフォルダを作成できるのでしょうか? 新規作成でも圧縮zipフォルダはでてきません。 ちなみに、Cドライブのファイルは普通にできます。 何か設定が必要なのでしょうか? どなたか、わかるかたおりましたら教えていただけますでしょうか? よろしくお願いいたします。

  • 圧縮(zip形式)フォルダを新規作成できない

    エクスプローラの右クリックで「新規作成」とすると、 『圧縮(LZH形式)フォルダ』が表示され、圧縮(zip形式)フォルダの表示がなくzipフォルダを作成できません。 どのような設定を行えば作成可能となるでしょうか。 また、エクスプローラの「送る」により『圧縮(zip形式)フォルダ』とすると、 《ZIPファイルを正しく処理するには、関連付けられているアプリケーションが圧縮(zip形式)フォルダである必要があります。 現在、関連付けられたファイルは圧縮(zip形式)フォルダではありません。 圧縮(zip形式)フォルダを、ZIPファイルを処理するためのアプリケーションとして指定しますか?》 のメッセージを表示します。 なお、microsoft圧縮(LZH形式)フォルダをセットしてあります。

  • zip 形式 フォルダの作成

    zip 形式 フォルダを作成するには、helpによると・・[ファイル] メニューの [新規作成] をポイントし、[圧縮 (zip 形式)] をクリックします。・・とありますが、当方のPCでは、[ファイル] メニュー、[新規作成]で [圧縮 (zip 形式)] が表示されません。初期設定等があるのでしょうか? OS XP2 因みに、ダウンロード等ではZIPを扱うことができます。

  • JAVAでフォルダ圧縮時のZipEntry作成方法

    JAVAでZIP圧縮プログラムを作成したのですが ZipEntry作成時にファイル名を引数にすれば問題なく解凍できたのですが フォルダ名やフォルダ内のファイル等を指定するとXP等で解凍できなくなってしまいました。 書式が間違っているのでしょうか? 何か方法やサンプルがありましたらよろしくおねがいします。 ZipEntry target = new ZipEntry("test.txt"); ←コレは解凍できました。 以下の用に書くと解凍できない ZipEntry target = new ZipEntry("folder\\"); ZipEntry target = new ZipEntry("folder\\test.txt"); ZipEntry target = new ZipEntry("\\folder\\test.txt");

    • ベストアンサー
    • Java
  • VBScriptで空フォルダ圧縮

    VBScriptで空フォルダ圧縮 VBScriptでファイルまたはフォルダを圧縮したく、 以下のURLを参考に作成しようと思っています。 http://okwave.jp/qa/q2006207.html しかし、空フォルダを圧縮しようとすると、 「指定されたディレクトリC:\新しいフォルダ は空なので、圧縮(zip形式) フォルダはそのディレクトリをアーカイブに追加できません。」 というエラーがポップアップで表示され、OKをクリックすると、 C:\書庫.zipは作成されていますが、解凍するとエラーになります。 そもそも空フォルダを圧縮しようというのは無理なのでしょうか? 日毎にフォルダのバックアップを取りたくて、かつ、管理の面から 空フォルダもzipで保存したいと考えております。 空フォルダを圧縮するなにか良い方法があれば教えてください。

  • zipファイルも含むファイル一覧作成ソフト

    zipで圧縮されたファイルが多数あるディレクトリの ファイル一覧を作成したいです。 上位のフォルダを指定して、その配下に含まれるディレクトリとファイルの一覧を 作成してくれるソフトを探しています。 zipファイルの場合は、その中のファイルも一覧化するものがないでしょうか? (zip以外の圧縮ファイルはありません。  また、パスワードもつけていません) なお、その一覧にはファイル名とファイル作成日付が 出力されれば十分です。 以下の条件で探しています。 ・OS:Windows Vista ・フリーソフト ・インストールではなく、exeファイルをコピーするだけで使えるソフト

  • ZIP形式の解凍フォルダについて

    はじめまして。 Windows Vista を使用しています。 ZIP形式の圧縮ファイルを作ると、圧縮ファイルは出来るのですが、ジッパーで閉じられたファイルのアイコン(展開フォルダ)が現われません。代わりにこのファイルを開くプログラムとして他のソフトのアイコンの小さいものが表示されます。 展開フォルダができないので、「すべて展開」というものができず、展開ウィザードを使えません。解凍自体は解凍ソフトで出来て問題ないのですが、今回、展開ウィザードを使う必要があり困っています。 この問題はどうすれば解決できるでしょうか? 展開フォルダができるようになるには、どうしたらよいでしょうか? よろしくおねがいします。

  • 圧縮 (zip 形式) フォルダについて

    WindowsXPSP2にて、zipファイルを作成しようと思い、MSのHPに書いてあるように、「メニュー」→「新規作成」→「圧縮 (zip 形式) フォルダ」を選択としましたが、「新規作成」の中にありませんでした。 圧縮したいファイルを右クリックして「送る」→「圧縮 (zip 形式) フォルダ」という方法では、「ZIPファイルを正しく処理するには・・・」という注意書きが表示されますが、なんとかZIPファイルを作成することができました。 しかし、やはり「新規作成」の中に「圧縮 (zip 形式) フォルダ」を表示させたいのですが、どうすればよいのでしょうか?

専門家に質問してみよう