問題タブ [apache-commons-compress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ColdFusionで64ビットのzipファイルを解凍します
私はjava.util.zip.ZipFile
ColdFusionで大きなファイルを解凍するために使用していました。ただし、「無効なCENヘッダー(不正な署名)」というエラーが発生します。
これがzip64ビット形式に関連していて、それjava.util.zip.ZipInputStream
を処理するために使用できることを示す投稿を見つけました。ただし、このエラーを回避することはできません。「クラス[B型のスカラー変数をメンバーを持つ構造体として逆参照しようとしました。」これはこの行によって引き起こされます:
どんな助けでも大歓迎です!
これが私のコードです
ソース:
gzip - Windows で Java (Apache 圧縮) を使用して「有効な」UNIX TAR アーカイブを作成するにはどうすればよいですか?
apache commons 圧縮ライブラリを使用して、「有効な」tar.gz アーカイブを作成しようとしています。作成されたアーカイブは組み込みデバイスによって読み取られ、同じファイル権限を持つ同じ形式でなければなりません。
ファイルの作成に Linux を使用している場合はすべて問題なく動作しますが、Windows を使用している場合は. ファイルは拒否されます。
ご覧のとおり、アーカイブには unix パーミッションを持つ特別なファイルのみが含まれています。これらは正しく設定されており、「動作中の」tar ファイルを使用して gzip で実行すると、作成された tar.gz も正常に動作します。
私が理解した唯一の違いは、動作していない tar ファイルがわずかに大きく (56 kb ではなく 61)、7zip がUnixではなく"Host OS" FATの下に表示されることです。
Windowsから「本物の」tarアーカイブを作成するにはどうすればよいですか?
前もって感謝します!
私の現在のソースコードは次のとおりです。
いくつかの調査を行ったところ、TAR ヘッダーの違いに気付きました。誰が私が間違っているのか教えてもらえますか?
java - バイト配列を ZipArchiveOutputStream に書き込む
zip ファイルを作成する必要があり、次の条件に制限されています。
- エントリは、File ではなく byte[] (または ByteArrayOutputStream) として提供されます。
- エントリのファイル名は非 ascii/UTF-8 にすることができます。
- JDK 1.6 以前
java.util.zip は JDK 1.7 以降の UTF-8 ファイル名のみをサポートするため、commons-compress ZipArchiveOutputStream を使用することをお勧めします。しかし、ファイルではなくバイト配列または ByteArrayOutputStream に基づいて ZipEntryArchive を作成する方法は?
ありがとうございました!
java - java 7zアーカイブを暗号化するにはどうすればよいですか?
Apache Commons Compress を使用してファイルを圧縮しています。アーカイブにパスワードを追加するにはどうすればよいですか?
spring-mvc - java.util.zip.ZipEntry および apache 圧縮 ZipEntry により一部のイメージ ファイルが破損する
Spring のマルチパート アップローダ コントローラを使用して、zip ファイルからエントリをアップロードおよび保存していますが、時折 PNG ファイルが破損していることに気付きました。 「fþ»ÀígÞÉ」などで。これは、実行ごとに同じファイルに発生するようです。java.util.ZipEntry を使用してこれらすべてを試した後、Apache Compress を試したところ、Apache Compress が Java 7 ユーティリティとは異なるファイルを破損していることがわかりましたが、その後の実行では常に同じファイルでした。
コード (最初に java.util.zip.ZipEntry):
org.apache.commons.compress.archivers.zip.ZipFile についても同じことが言えます。
呼び出される 2 つのメソッドは次のとおりです。
と:
もちろん、2 つ目はおそらく問題の一部ではありません。
私はググってみましたが、これに似た問題が見つかったようですが、それは常に外部の問題でした. なぜこれが当てはまるのか誰にもわかりますか?
いくつかの画像を再編集したところ、画像を白黒に変更したり、画像全体の色相を変更したりすると問題はなくなりますが、境界線を追加したり単一の色を変更したりすると問題が残ります。一部のファイルのバイトの特定の配置は、Java 自身と Apache の圧縮ファイル リーダーの両方が使用する基礎となる API のバグをくすぐるように見えますが、それは単なる憶測です。
EDIT:追加の使用法は、サイズが10Kを超えるgifで破損が発生することを示しているため、おそらくこれはバグと関係がありますか?ReadInputStream() の呼び出しでバッファのサイズを任意に 2 倍にしようとしましたが、MySQL で特に大きな画像 (49K が 98K になり、大きすぎた) で blob サイズがオーバーフローする以外は何もしませんでした。
java - 複数の zip を含む単一の zip の作成が ServletOutputStream で失敗する
コモンズ圧縮を使用して複数のファイルを圧縮し、サーブレットからクライアントに送信しています。ファイルは、任意のタイプのファイル (テキスト、ビデオ、オーディオ、アーカイブ、画像など) の組み合わせである可能性があります。ファイルの inputStream を取得し、IOUtils.copy(is, os) を使用して ServletOutputStream に書き込みます。コードは通常、どのドキュメントの組み合わせでも正常に機能しますが、複数の zip を含むファイルをダウンロードする要求があるとjava.io.IOException: Closed
、結果として、zip のサイズが個々のファイル サイズの合計であっても、作成された zip ファイルが壊れています (I圧縮は使用していません)。
ローカルで zip を作成して、コンストラクターのFileOutputStream
代わりに使用しようとしましたが、成功しました。したがって、問題は に存在するようです。response.getOutputStream()
ZipArchiveOutputStream
ServletOutputStream
誰でも回避策を提案できますか。
これが私のコードです:
`
例外トレースは次のとおりです。
110行目はzipOutputStream.closeArchiveEntry(); //**Starts to fail here after 1st zip is added**
前もって感謝します。
java - Commons-compression を使用して Java で tar.gz を読み取る
わかりましたので、tar.gz ファイル (または xy) の内容を読みたいのですが、それは同じことです。私がやっていることは多かれ少なかれこれです:
しかし、のgetFile
メソッドを呼び出すと null になりますTarArchiveEntry
。
Apache commons compress 1.8.1 を使用しています