格式未知(幻数5153)

时间:2012-03-25 20:15:23

标签: java android sqlite gzip

当我尝试解压缩.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 个答案:

答案 0 :(得分:1)

资产很可能在到达您的代码之前即时解压缩。 aapt对如何处理压缩资产文件有很强的想法。在资产文件名中,行为部分取决于(就我所知的方式未记录的方式)。最好不要将未压缩的文件放在assets目录中,让aapt为你压缩它们。它通常做得很好,让你不必担心这种事情。

请参阅zapl评论所指的博客文章。

答案 1 :(得分:0)

您的资产未被压缩(或正在被透明地解压缩),因为它在文件开头的“SQLite格式”的开头找到了“SQ”。