2012-03-25 8 views
0

Wenn ich versuche, meine .gz-Datei zu dekomprimieren und die db-Datei zu überschreiben, bekomme ich das Unbekannte Format (magische Zahl 5153). Hier ist mein Code für die Dekomprimierung und überschreiben.Unbekanntes Format (magische Zahl 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

Code sieht okay aus, könnte mit http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ in Verbindung stehen – zapl

Antwort

1

Es ist sehr wahrscheinlich, dass das Asset im laufenden Betrieb dekomprimiert wird, bevor es in den Code gelangt. Der aapt hat seine eigenen starken Ideen, wie mit komprimierten Dateien umzugehen ist. Das Verhalten hängt teilweise (auf Weisen, die nicht dokumentiert sind, soweit ich das beurteilen kann) von den Asset-Dateinamen ab. Es ist viel besser, unkomprimierte Dateien im Verzeichnis "Assets" zu platzieren und sie für Sie komprimieren zu lassen. Es macht in der Regel eine hervorragende Arbeit und entlastet Sie von Sorgen über diese Art von Sache.

Sehen Sie den Blogpost, auf den zapls Kommentar zeigt.

0

Ihr Vermögenswert wird nicht komprimiert (oder transparent dekomprimiert wird), da sie die „SQ“ am Anfang „SQLite-Format“ am Anfang der Datei ist zu finden.

+0

Hm die Datei ist im .gz-Format . –

+0

Das ist nicht, was Ihr Fehler sagt ... –

+0

K Ich denke, ich habe herausgefunden, warum apk streift den .gz-Tag auf der MyContacts-Datei. Ich bin mir nicht sicher, wie ich das umgehen soll. –