Неизвестный формат (магический номер 5153) - PullRequest
0 голосов
/ 26 марта 2012

Когда я пытаюсь распаковать мой файл .gz и перезаписать файл db, я получаю Неизвестный формат (магическое число 5153). Вот мой код для распаковки и перезаписи.

           InputStream fIn = c.getAssets().open("MyContacts");
        // Path to the just created empty db
        String outFileName = DB_PATH + DB_NAME;

        //Open the empty db as the output stream
        FileOutputStream myOutput = new FileOutputStream(outFileName);
        GZIPInputStream gz = new GZIPInputStream(fIn);

        //transfer bytes from the inputfile to the outputfile
        byte[] buffer = new byte[10246];
        int length;
        while ((length = gz.read(buffer, 0,buffer.length)) != -1){
            myOutput.write(buffer, 0, length);
        }

        //Close the streams

        gz.close();
        myOutput.flush();
        myOutput.close();
        fIn.close();

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Весьма вероятно, что ресурс распаковывается на лету, прежде чем он попадет в ваш код. У aapt есть свои сильные идеи о том, как обращаться со сжатыми файлами активов. Поведение частично зависит (насколько я могу судить, недокументированным способом) от имен файлов активов. Вам гораздо лучше поместить несжатые файлы в каталог ресурсов и позволить aapt сжать их для вас. Обычно он отлично работает и избавляет вас от необходимости беспокоиться о подобных вещах.

См. Сообщение в блоге, на которое указывает комментарий zapl.

0 голосов
/ 26 марта 2012

Ваш ресурс не сжат (или прозрачно распаковывается), так как он находит «SQ» в начале «формата SQLite» в начале вашего файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...