問題タブ [zipinputstream]
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.
android - Androidでより大きなzipを解凍する方法は?
次のように、Android Studio プロジェクトでファイルを解凍します。
元のzipファイルは約です。サイズは 30 MB で、*.txt ファイルのみが含まれます。これらのテキスト ファイルのうち 2 つは 100 MB を超えているため、次のエラー メッセージが表示されます。
E/AndroidRuntime: FATAL EXCEPTION: main プロセス: com.example.myapp、PID: 15821 java.lang.OutOfMemoryError: 167083628 バイトの割り当てを 33542384 の空きバイトと 136MB で OOM で java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream .java:91) で java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201) で com.example.myapp.managers.UnzipManager.decompressZip(UnzipManager.java:104) で com.example.myapp.managers.UnzipManager. (UnzipManager.java:43) com.example.myapp.MyActivity.onCreate(MyActivity.java:103) で android.app.Activity.performCreate(Activity.java:6272) で android.app.Instrumentation.callActivityOnCreate(Instrumentation. java:1108) で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387) で android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494) で android.app.ActivityThread.access$900(ActivityThread.java:157) で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356) で android.os. Handler.dispatchMessage(Handler.java:102) で android.os.Looper.loop(Looper.java:148) で android.app.ActivityThread.main(ActivityThread.java:5551) で java.lang.reflect.Method.invoke (ネイティブ メソッド) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) で com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) で1356) で android.os.Handler.dispatchMessage(Handler.java:102) で android.os.Looper.loop(Looper.java:148) で android.app.ActivityThread.main(ActivityThread.java:5551) で java. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) の lang.reflect.Method.invoke(ネイティブ メソッド) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) の)1356) で android.os.Handler.dispatchMessage(Handler.java:102) で android.os.Looper.loop(Looper.java:148) で android.app.ActivityThread.main(ActivityThread.java:5551) で java. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) の lang.reflect.Method.invoke(ネイティブ メソッド) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) の)
これらのファイルを適切に解凍するにはどうすればよいですか?
java - Java の 1.8 へのアップグレード時にファイルを解凍する際の問題
私はコアjava.util.zip
クラスを使用しています。次のコードを使用してクライアント ファイルを解凍します。
次のエラーが表示されます:
ただし、JDK 1.6 では同じコードが正常に機能します。
私は一日中検索しましたが、Java JDK にこのコードに対応する変更があることを見つけることができませんでした。
私の調査結果を裏付ける適切な原因またはリンクを見つけるのを手伝ってください。
java - Android ZipInputStream ZipEntry がファイルの最後まで読み取らない
json ファイルといくつかの base64 でデコードされた画像を含む圧縮されたフライがあり、次のコードを使用してデータを読み取ります。
// これは問題ではありません。問題は、zis.read(buffer, 0, (int) size)
がファイルからすべてのデータを読み取らないため、JSONException
編集:
問題はストリームからのデータの読み取りではなく、すべてのデータを読み取りますが、これは JSONException であるエンコードに問題があると思います。
2959607 は文字列の長さです
java - Java - ZipInputStream の解析中に OutOfMemoryError を取得する
Web サービスから取得した zip ファイルの内容の読み取りに問題があります。
zip ファイルはbytes
、以下のコードでわかるように、 と呼ばれるバイト配列に格納されます。
実行するIOUtils.toString(zis)
と、OutOfMemoryError: Java heap spaceが発生します。
この問題は、zip に含まれる json ファイルのサイズが 150MB を超えていることが原因であると確信しています。他の小さなファイルで試してみましたが、json コンテンツを問題なく取得できます。
メモリに保存せずにzipの内容を読み取る方法はありますか?
編集: ヒープメモリを増やすことができることは知っていますが、どの環境でも機能するため、コードベースのソリューションを探しています。
java - Java: Zipinputstream から Zipoutputstream への変換により、「end-of-central-directory signature not found」エラーが発生する
Zip を a から a にコピーしようとしてZipinputstream
いZipoutputstream
ます。
Zipをbyte[]
Oracleデータベースのように保存します。私Zipinputstream
はzipを解凍するために使用し(後でZipを編集したい)、それをに入れてZipoutputstream
新しいものを取得し、byte[]
この配列を使用して後でServletOutputStream
. 新しいファイルを作成すると-なしでZipinputstream
-動作します。しかし、使用するZipinputstream
とエラーが発生します。
これが私のコードです: