2012-12-12 19 views
16

ZIPアーカイブにはディレクトリとして整理されていないため、ZIPエントリにはエントリの絶対パス名が格納されます(次の部分は確信しています)。メタデータには、ファイルがどのように格納されるべきかに関する情報(ディレクトリ内)が含まれています。ZipEntryのパス名のファイル区切り記号?

WindowsでZIPファイルを作成すると、別のOSでデータを解凍すると、 Mac OS Xの場合、Windowsのファイル構造は変わっていません。 ZIP内のファイル区切り記号が標準であるため、unzipperがこれを処理するように設計されているか、isitですか?

私はZIPファイル内のエントリをZIPファイルの名前を使って見つけようとしているので、これを求めています。しかし、Windows以外のシステムで動作させるには、どのファイル区切りを使うべきですか?

私はJavaを使用していますが、ZipEntryの方法:.getName()は、Windowsファイルセパレータ\を使って私にパスを与えます。 Java File.separatorセパレータを使用して別のOSで動作させるには十分でしょうか?または、可能な区切り記号ごとにファイルを見つけようとする必要がありますか?

+0

あなたが解凍するとき、絶対パスでファイルを解凍したくないのですか? – vels4j

+0

いいえ、問題は、私がファイルを検索している間、私のパスにファイルセパレータを設定して、OSがプラッタフォームであれば問題なく動作するようにする方法です... – Ordiel

答えて

11

ファイルセパレータは、zipファイルを作成するアプリケーションによって異なります。一部のアプリケーションはシステムファイルセパレータを使用しますが、一部のものは "文明化された"スラッシュ "/"を使用します。したがって、zipファイルを作成してそれを使用している場合は、スラッシュをファイルセパレータとして使用するだけです。 zipファイルが他の場所で作成されている場合は、どのセパレータが使用されているかを調べる必要があります。私は単純な方法はわかりませんが、あなたはブルートメソッドを使用して、進行中に両方のセパレータタイプをチェックアウトすることができます。

一部のアプリケーション、特にカスタムジップ作成コードでは、異なるジップエントリにセパレータを混在させることができるので、各エントリをチェックアウトすることを忘れないでください。

5

.zip file specification状態:

4.4.17.1ファイルの名前、オプションの相対パスを持ちます。 格納されているパスには、ドライブ文字または デバイス文字、またはスラッシュが含まれていてはなりません。すべてのスラッシュ は、 と逆でスラッシュ '/'でなければなりません。Amiga およびUNIXファイルシステムなどとの互換性のためにスラッシュ '\'を入力してください。入力が標準 の場合、ファイル名フィールドはありません。

関連する問題