2016-07-19 17 views
1

が、私は問題を満たして破損したzipファイルには、ここではコードです:例外:おそらくないzipファイルやAndroidでのzipファイルを生成するためのライブラリをzip4j使用しているとき

try { 
    ZipFile zipFile = new ZipFile(dest); 
    zipFile.setFileNameCharset("GBK"); 
    if (srcFile.isDirectory()) { 
     zipFile.addFolder(srcFile, parameters); 
    } else { 
     zipFile.addFile(srcFile, parameters); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

と私が得ました例外メッセージ:

net.lingala.zip4j.exception.ZipException: Probably not a zip file or a corrupted zip file 
    at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:179) 
    at net.lingala.zip4j.core.HeaderReader.readAllHeaders(HeaderReader.java:78) 
    at net.lingala.zip4j.core.ZipFile.readZipInfo(ZipFile.java:425) 
    at net.lingala.zip4j.core.ZipFile.checkZipModel(ZipFile.java:935) 
    at net.lingala.zip4j.core.ZipFile.addFiles(ZipFile.java:263) 
    at net.lingala.zip4j.core.ZipFile.addFile(ZipFile.java:250) 
Caused by: java.io.IOException: Negative seek offset 
    at java.io.RandomAccessFile.seek(RandomAccessFile.java:555) 
    at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:117) 

このコードは、ローカルファイル用のEclipseで完璧に動作しますが、Androidのではうまく動作しませんが、私は先.zipファイルのパスが正しいことをかなり確信している、とzip4jライブラリのバージョンは1.3です。 2。

誰でも私に何か提案を与えることができますか?

答えて

0

非常に似たstacktraceを見つけました。しかし、デスクトップ上のバージョン1.3.2ではjavaとzip4jを使用します。私の答えがアンドロイドとどのように関係しているのかは分かりませんが、ここにはあります。

Caused by: net.lingala.zip4j.exception.ZipException: Probably not a zip file or a corrupted zip file 
     at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:179) 
     at net.lingala.zip4j.core.HeaderReader.readAllHeaders(HeaderReader.java:78) 
     at net.lingala.zip4j.core.ZipFile.readZipInfo(ZipFile.java:425) 
     at net.lingala.zip4j.core.ZipFile.checkZipModel(ZipFile.java:935) 
     at net.lingala.zip4j.core.ZipFile.addFolder(ZipFile.java:343) 
     at net.lingala.zip4j.core.ZipFile.addFolder(ZipFile.java:330) 
Caused by: java.io.IOException: Negative seek offset 
     at java.io.RandomAccessFile.seek(RandomAccessFile.java:555) 
     at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:117) 
     at net.lingala.zip4j.core.HeaderReader.readAllHeaders(HeaderReader.java:78) 

は私が

File destination = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString()); 
ZipFile zip = new ZipFile(destination); 

差がFiles.createTempFile(ある)に変更し、問題を解決するには、この

Path destination = Files.createTempFile("export", ".zip"); 
ZipFile zip = new ZipFile(destination.toFile()); 

ようzip4j使用私のスタックトレースは、空のファイルを作成しますファイルはZipFileのコンストラクタを壊す必要があります。空いているパスでFileを渡したときに問題はなくなりました。

-1

私はAES暗号化を使用したが、パラメータAESデータキーを設定しなかったため、同じ質問がありました。

enter image description here

+1

してください** [編集] **あなたのポストとテキストの代わりに、スクリーンショットなど、実際のコードを示しています。他の人は画像からコピー&ペーストすることはできません。 [詳細はこちら](https://meta.stackoverflow.com/a/285557/1402846)を参照してください。ありがとうございました。 – Pang

関連する問題