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

このQ&Aのポイント
  • JAVAでZIP圧縮プログラムを作成する際のZipEntry作成方法について解説します。
  • フォルダ名やフォルダ内のファイルを指定するとXP等で解凍できなくなる問題について調査し、解決策を提案します。
  • 解凍できるファイルの書式やサンプルを示し、正しい書式でZipEntryを作成する方法を説明します。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

ディレクトリ区切り文字は"\\"ではなく"/"にしないといけません。

geregerejp
質問者

お礼

回答ありがとうございます・。 遅くなりましたが無事に回答することができました。

関連するQ&A

  • 圧縮フォルダが作成できない

    windows vistaを使用しています。 圧縮(ZIP)フォルダを新規作成しようとすると、「ファイル`新しい圧縮された(ZIP)フォルダ.zip'を作成できません。 ファイルシステムのエラーです(16386)。」というエラーメッセージが出て作成できません。 どうすれば圧縮(ZIP)フォルダを新規に作成できるようになるのでしょうか? デスクトップには作成できるのですが、そのフォルダ(フォルダ名が分からないのですが、windows XPやMeだとマイドキュメントというフォルダと同じフォルダだと思います。)には作成できません。システムエラーと表示されているということは、なにか壊れたのでしょうか。

  • 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
  • 圧縮 zip形式 フォルダーを作成できません

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

  • windows8.1で圧縮したフォルダについて

    よろしくお願いします。 windows8.1のパソコンでフォルダを右クリック~7-zip~圧縮...で圧縮をして、その際パスワードの設定をしました。 すると、フォルダの右上に7のマークが付いたフォルダが新たに作成されました。 ダブルクリックをして、パスワードを入力することにより、フォルダの中身が確認出来ました。 そこで、質問なのですが、右クリック~7-zipと進んで行くと、7-zipで圧縮とか、zipで圧縮とか出るのですが、何かが異なるのでしょうか? また、windows8.1のパソコンでフォルダを右クリック~7-zip~7-zipで圧縮したフォルダを、オフラインのXPで開こうと思ったところ開くことが出来ませんでした。 XPのパソコンには、解凍ソフトLaplusが入っているのですが開けませんでした。 これが、正常なのでしょうか? windows8.1のパソコンで圧縮したフォルダを他のOSで開きたい場合にはどのようにしたら良いのでしょうか? また、圧縮して解凍した際に中に入っているファイルやフォルダが破損してしまう事は無いのでしょうか? 全て箇条書きになってしまいましたが、どなた様かご教示の程よろしくお願い致します。

  • 圧縮ファイルから解凍された時のフォルダの名前

    圧縮ファイルを解凍し、解凍されたフォルダが作成されますが、 その時のファイル名が 以前、いつだかに解凍した時のフォルダ名で解凍されます。 フォルダの内容は正しいですが、ただフォルダ名だけが以前に解凍したときのフォルダの名前としてでます。 これは直りますでしょうか。

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

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

  • 圧縮フォルダで。

    前のPCはWindows xpの時 ・右クリックで新規作成の圧縮フォルダを作れるのに PCを買い換え Windows 2000に変わったとき作れなくなりました。 なぜ、でしょうか? あと ZIP書式とはなんですか? 教えてください。

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

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

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

    • ベストアンサー
    • Java
  • 圧縮フォルダが解凍できません><;

    最近、圧縮フォルダ(確認済はLzhとZipだけですが・・・)が解凍できません>< ZipファイルをDLしてきて ドラッグ アンド ドロップで他のフォルダに解凍しているんですが フォルダの中身が空になります WindowsLiveMesseで ファイルを受信するときも 時々受信完了したのにフォルダのにファイルがありません><;; Lzhファイルは移動させようとするとアクセスが拒否されました とでます Zipファイルを開いたときは ファイルは表示されているんですが>< サイズは (例) ○○.zip→○○(フォルダ)→ファイルA,ファイルB ↑2mb   ↑0kb      ↑1mb   ↑1mb とかになります フォルダサイズは0になるのが><・・・ どうすればいいんですかね; OsはVista Ultimateです><