2012-03-25 4 views
0

.gz 파일의 압축을 풀고 db 파일을 덮어 쓰려고하면 알 수없는 형식 (마법 번호 5153)이 표시됩니다. 압축 해제 및 덮어 쓰기에 대한 내 코드는 다음과 같습니다.알 수없는 형식 (매직 번호 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(); 
+1

코드가 정상적으로 보입니다. http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ – zapl

답변

1

자산이 코드에 도달하기 전에 즉석에서 압축 해제 될 가능성이 큽니다. aapt에는 압축 된 에셋 파일을 처리하는 방법에 대한 강력한 아이디어가 있습니다. 이 동작은 자산 파일 이름에 부분적으로 (내가 말할 수있는 한 문서화되지 않은 방식으로) 달려 있습니다. 압축되지 않은 파일을 assets 디렉토리에 저장하고 aapt가 압축하도록하는 것이 훨씬 낫습니다. 그것은 일반적으로 훌륭한 일을하고 이런 종류의 일에 대해 걱정할 필요가 없도록 해줍니다.

zapl의 의견이 가리키는 블로그 게시물을 참조하십시오.

0

이 파일의 시작 부분에 "SQLite는 형식"의 시작 부분에 "SQ"를 찾는 이후 귀하의 자산이 압축되지 않은 (또는 투명하게 압축되고있다).

+0

파일이 .gz 형식으로되어 있습니다. . –

+0

그게 당신의 오류가 뭐라고하지 않습니다 ... –

+0

케이 내가 왜 내 APL 파일에. gz 태그 해제 APK 스트립 아웃 생각. 이 문제를 해결하는 방법을 잘 모르겠습니다. –

관련 문제