問題タブ [zipoutputstream]
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 - ZipOutputStream.closeEntry() がハングする (java/jersey)
InputStream を RESTful サービスに投稿しようとしています。通常のファイルの場合、これで問題ありません。
別の場所では、多数のファイルをその場でパイプされた zip ストリームに書き込もうとしています。これを行うには、拡張するクラスがInputStream
あり、呼び出されたときread()
に次のファイルをパイプに書き込みます。最初のファイルが書き込まれたときに呼び出しますZipOutputStream.closeEntry()
が、ハングします。どうして??
このクラスを単体テストでテストすると、正常に動作します。このオブジェクトを投稿しようとすると、ハングします。デバッガーは、ロックオンを待っていると言っていますSocketWrapper
。
メディアタイプを に設定しようとしたことにも注意してくださいapplication/octet-stream
。また、RESTful メソッドが呼び出されることはありません。
ストリームクラス...
投稿コードは...
もう一方の REST メソッドは...
java - jarファイル内の特定のディレクトリ内のいくつかのファイルを置き換える方法は?
jar ファイル内の特定のディレクトリ内の一部のファイルを置換または更新するという問題があります。
すでにいくつかの投稿を読みました。このリンクで提供されるコード (JarUpdater クラス) Updating .JAR's contents from code
ZipInputStream、ZipOutputStream、ZipEntryなどの役割と使用法を理解するのに非常に役立ちます..
ただし、実行すると、
- EOF 例外があります
[mk7 による編集: jar ファイルを 20 回ほど調べたところ、破損していることがわかりました。そのため、jar ファイルを新しいものに置き換えた後、EOF 例外はなくなりました。以下の他の 2 つの問題は未解決のままです]
これら 2 つの新しい xml ファイルは、jar ファイルの「ルート ディレクトリ」にのみコピーされます。
これら 2 つの新しい xml ファイルは、/conf というディレクトリ内の 2 つの元のファイルを決して置き換えません。
xml ファイルを新しいファイルに置き換えるには、どのコード行を変更すればよいですか?
System.out.println を使用すると、while ループがすべてのディレクトリを通過し、期待どおりにすべてのファイルを比較することがわかりました。新しい一時 jar も期待どおりに作成されました...「notInFiles = false」というステートメントで問題が解決すると思いましたが、そうではありません。
/conf にステップインして、これら 2 つのファイルのみを置き換え、jar ファイルのルートにコピーを残さないようにするにはどうすればよいですか?
私は何が欠けていますか?洞察をありがとう!
以下はそのリンクのコードです。
c# - SharpZipLib を使用して ZipOutputStream を作成する C# OutOfMemoryException
次のコードで非常に厄介な OutOfMemory 例外が発生し続けます。
たくさんの小さなファイル (PDF、それぞれ約 1.5 MB) を圧縮しています。
最初は、25 個のファイルを圧縮した後に例外が発生していましたが、これは大規模なアーカイブのようには見えません。
ZipEntry のサイズを設定すると、最大 110 個のファイルを圧縮できるようになったので、何とか助けられました (Visual Studio でデバッグしています)。
これが私のコードです。おそらく何か問題があります。
どんな助けでも大歓迎です。
ありがとう
c# - 出力ストリームから無効なファイルを取得する C# ZipOutputStream
私は C# の SharpZip ライブラリ (バージョン 0.86.0) をいじっています。私は基本的に、多数のファイルを 1 つのクリーンな zip ファイルにパッケージ化するために使用しています。zip ファイルのバイト配列を生成する関数は次のようになります。
この関数は、1 つのアイテムを含むファイルに対して正常に機能します。しかし、何らかの理由で2つ以上ある場合、抽出/開くときにエラーが発生します。
PeaZip は次のように述べています。
アーカイブを読み取れません
WinZip は次のように述べています。
このファイルのローカル ヘッダーに格納されている圧縮サイズは、中央ヘッダーに格納されている圧縮サイズと同じではありません
しかし、ここにキッカーがあります。Windows 8 アーカイブ ツールは、ファイルに対して問題なく動作します。WinZip エラーのようなものは、ファイルをストリームに間違って書き込んでいると思わせます。しかし、それは私にはうまく見えます。これをどうすればいいのかわからない..
編集
codemonkeys 入力からの私の変更は次のとおりです。私には良く見えますが、それでも同じエラーが発生します
java - Spring REST - .zip ファイルを作成してクライアントに送信する
バックエンドから受け取った圧縮ファイルを含む .zip ファイルを作成し、このファイルをユーザーに送信したいと考えています。2日間、私は答えを探していましたが、適切な解決策を見つけることができませんでした.多分あなたは私を助けることができます:)
今のところ、コードは次のようになっています: (Spring Controller ですべてを行うべきではないことはわかっていますが、それについては気にしないでください。これはテスト目的であり、機能させる方法を見つけるためです)
しかし、問題は、コードを使用して、URL: localhost:8080/zip を入力すると、.zip ファイルではなく file: test.zip.html が取得されることです。
.html 拡張子を削除して test.zip だけを残すと、正しく開きます。この .html 拡張子が返されないようにするにはどうすればよいですか? なぜ追加されるのですか?
他に何ができるかわかりません。また、ByteArrayOuputStream を次のようなものに置き換えようとしていました。
メソッドを無効に設定して何も返さないようにしますが、作成された.zipファイルは破損していますか?
私のMacbookでは、test.zipを解凍した後、test.zip.cpgzを取得していましたが、これは再びtest.zipファイルなどを提供していました..
私が言ったように、Windowsでは.zipファイルが破損しており、開くことさえできませんでした。
また、拡張子 .html を自動的に削除することが最善の選択肢になると思いますが、どうすればよいでしょうか? 見た目ほど難しくないことを願っています:)ありがとう
java - JavaでZipOutputStreamをzipファイルに保存する
メモリ内に ZIP アーカイブを作成する必要がありますが、ディスク内の実際の .zip ファイルに保存する必要があります。どうやってするの?擬似コード:
java - この状況で特定の方法で ZipOutputStream を閉じる必要があるのはなぜですか?
私は2つの例を持っています:
例 1:
例 2:
2 番目の例は、私が望んでいるようには機能しません。つまり、ファイルの内容は空ではありませんが、zip ファイルが破損しているかのようです。
最初の例がうまくいかない理由を教えてください。
jsf-2 - ダウンロードする 1 つの zip ファイルに 2 つの jasperReports を入れる方法は?
これは、JasperReport を印刷するためにユーザーによって呼び出される managedBean のアクション メソッドですが、zip ファイル内に複数のレポートを配置しようとすると機能しません。
getPeriodScales は 2 つのオブジェクトを返し、JasperFillManager.fillReport は正常に実行されています。1 つのレポートのデータを生成するだけでレポートが印刷されますが、2 つのレポートをストリーミングしようとして WinRar で開くと、1 つだけが表示され、「予期しないアーカイブの終わり」が表示されます。 、7zip では両方が表示されますが、2 つ目は破損しています。
何が間違っているのですか、または複数のレポートを圧縮せずにストリーミングする方法はありますか?
java - ZipEntry のメソッド getSize() が正しいサイズを返すように、ZipOutputStream を使用して圧縮された Zip アーカイブを作成する方法は?
test_file.pdf
1 つのファイルを zip アーカイブに入れ、test.zip
このアーカイブを読み取るコード例を考えてみましょう。
出力:
Entry size: -1
ただし、圧縮されていない zip アーカイブを作成する場合 (メソッドZipEntry.STORED
)、getSize() は正しいサイズを返します。
出力 (たとえば、正しい):
Entry size: 9223192
正しいentry.getSize()
存在の圧縮された zip アーカイブ (例: Ark プログラムによる zip アーカイブ)。
質問:標準ライブラリのみを使用してエントリの正しいサイズを返す圧縮(または存在する場合は別の) zip アーカイブを作成する方法は?ZipEntry.DEFLATED
この推奨事項を試しましたが、うまくいきません:
出力:
Entry size: -1