当我尝试解压缩.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();
答案 0 :(得分:1)
资产很可能在到达您的代码之前即时解压缩。 aapt对如何处理压缩资产文件有很强的想法。在资产文件名中,行为部分取决于(就我所知的方式未记录的方式)。最好不要将未压缩的文件放在assets目录中,让aapt为你压缩它们。它通常做得很好,让你不必担心这种事情。
请参阅zapl评论所指的博客文章。
答案 1 :(得分:0)
您的资产未被压缩(或正在被透明地解压缩),因为它在文件开头的“SQLite格式”的开头找到了“SQ”。