- PR -

空フォルダを含むZIPファイルの作成について

1
投稿者投稿内容
Itchy
会議室デビュー日: 2004/11/11
投稿数: 3
投稿日時: 2004-11-11 18:17
はじめまして。
ひとつ行き詰まったところがあり、投稿させていただきました。

現在、java.util.zipを使って、ZIPファイル作成のプログラムを作っています。
圧縮するディレクトリ構造に、空フォルダ(ファイルをもたないフォルダ)があります。
その場合、その空フォルダを含めた形でZIPファイルを作成する方法がわかりません。

ZipEntryクラスにて、ファイルをパス指定し、それまでのフォルダは自然と作成されます。
フォルダ自体というのは、Zipファイルに作れないのでしょうか?

WinZipのソフトを使って圧縮してみましたが、空フォルダも圧縮できていました。
それを考えると、Zipの仕様で空フォルダが作れないわけではないようです。

どなたか知恵をお借りできないでしょうか?
よろしくお願いします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-11-12 09:52
古いかも
[JavaHouse-Brewers:14962]
Re: java.util.zip クラスの使い方について
http://java-house.jp/ml/archive/j-h-b/014962.html
Itchy
会議室デビュー日: 2004/11/11
投稿数: 3
投稿日時: 2004-11-12 18:20
MMXさん回答ありがとうございます。

残念ながら、リンクをたどって行ってみましたが、空フォルダの圧縮方法については見つけることができませんでした。
(その部分はもうなくなってしまったのかな?)

どなたか知っていますか?

問題を具体的に言うと、下記の例になります。

TEST
├A     ----フォルダ
│└A1.txt ----ファイル
├B     ----フォルダ
│└B1.txt ----ファイル
├C     ----フォルダ(←圧縮できない)

└D     ----フォルダ
  └D1.txt ----ファイル

ZIP圧縮する場合、A1.txt,B1.txt,D1.txtのファイルをZipEntryにパス指定することによって、A,B,Dのフォルダは自動的に作成されます。
問題は、Cフォルダを圧縮する手段がなんとも見つからないことです。
(new ZipEntry("\\Test\\C") とエントリを行っても、当然ファイルとみなされてしまいます。)

java.util.zipの限界なのかとも、思いはじめてます。
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2004-11-12 19:12
引用:

問題は、Cフォルダを圧縮する手段がなんとも見つからないことです。
(new ZipEntry("\Test\C") とエントリを行っても、当然ファイルとみなされてしまいます。)



以下のような感じで、名前の最後に"/"を付けてやるとフォルダと認識されるようですよ。
コード:

ZipEntry dir1 = new ZipEntry("dir1/");



ZipEntry#isDirectory()のAPIドキュメントにこんな事が書いてあります。

引用:

これがディレクトリエントリである場合に、true を返します。ディレクトリエントリは、その名前の最後に「/」を付けて定義されています。



コンストラクタのコメントにも書いておいて欲しいですよねぇ。
Itchy
会議室デビュー日: 2004/11/11
投稿数: 3
投稿日時: 2004-11-12 19:40
佐々木さん、回答ありがとうございます。

できました!
本当に感謝です。

# javadocをよーく解釈しないといけないですね。
1

スキルアップ/キャリアアップ(JOB@IT)