java.util.zip.ZipException: запись центрального каталога не найдена - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть код, который отлично работает на эмуляторе, но когда я запускаю его на Samsung Galaxy Tab, он выдает исключение.
Я получаю один сжатый zip-файл с сервера через сокет, а затем извлекаю этот файл.Если я сжимаю и отправляю два или три текстовых файла, он отлично работает как на эмуляторе, так и на Galaxy Tab.
Но если я сжимаю и отправляю небольшой файл изображения с текстом или двумя файлами изображений, он дает:> java.util.zip.ZipException: запись центрального каталога не найдена <на вкладке Galaxy, но нет ошибки на эмуляторе.Размер файла Zip не превышает 32 КБ, и я уверен, что файл принимается правильно.Вот мой код распаковки </p>

package com.vsi.vremote;

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import android.content.Context;
import android.util.Log;

public class UnCompressor {
    private static final String TAG = "UnCompressor";
    Context context;

    public UnCompressor(Context context) {
        this.context = context;
    }

    private final void copyInputStream(InputStream in, OutputStream out)

    throws IOException {
        byte[] buffer = new byte[1024];
        int len;

        while ((len = in.read(buffer)) >= 0)
            out.write(buffer, 0, len);

        in.close();
        out.close();
    }

    public final String[] unCompress(String name) {
        try {
            Log.d(TAG, "Uncompress called");

            ZipFile zipFile = new ZipFile(context.getFileStreamPath(name));
            Log.d(TAG, "Zip file created");
            Enumeration entries = zipFile.entries();
            String fileNames[] = new String[zipFile.size()];
            int counter = 0;

            Log.d(TAG, "Loop strting");
            while (entries.hasMoreElements()) {
                Log.d(TAG, "Getting next entry");
                ZipEntry entry = (ZipEntry) entries.nextElement();

                Log.d(TAG, "Extracting file: " + entry.getName());
                copyInputStream(
                        zipFile.getInputStream(entry),
                        new BufferedOutputStream(context.openFileOutput(
                                entry.getName(), Context.MODE_PRIVATE)));
                fileNames[counter++] = entry.getName();
            }
            zipFile.close();
            return fileNames;

        } catch (IOException ioe) {
            System.err.println("Unhandled exception:");
            ioe.printStackTrace();
            return null;
        }
    }

    public final void delete(String fileName) {
        context.deleteFile(fileName);
    }
}

Примечание: я только что проверил его на своем HTC WildFire, он также работает на этом мобильном телефоне, но galaxy TAB: (

Ответы [ 2 ]

0 голосов
/ 21 августа 2013

enter image description here

Это только добавление этих файлов в zip-файл (см. Скриншот), но я должен сделать zip-файл из этих частей zip-файла.Я просто разделил свой zip-файл на части и загрузил его на сервер.Теперь я хочу загрузить эти файлы в мое приложение и перестроить zip-файл в приложение.

0 голосов
/ 03 мая 2011

Посмотрите, возможно ли это связано с Запись в центральном каталоге не найдена (ZipException) и посмотрите, если ответ там полезен

...