Lecture d'un fichier dans une archive Zip et mettre son contenu dans une Chaîne de caractères dans Android

c'est ma première question, bien que j'ai déjà utilisé beaucoup de conseils de Débordement de la Pile. Mais pour cette situation, je n'ai pas trouvé de solution pour le moment.

Voici la situation: j'ai un fichier zippé et je veux lire un fichier spécifique et mettre son contenu dans une variable de Chaîne, qui sera retourné et mis dans un TextView Android. Je ne veux pas que le fichier soit écrit sur sdcard, je veux juste effectuer une opération de mémoire.

Par exemple, à l'intérieur de db.zip j'ai un fichier nommé packed.txt, dont le contenu est "Pile á é ç". La Chaîne retournée dans ma méthode montre "83 116 97 99 107 32 195 161 32 (...)" qui sont les valeurs UTF-8 pour les personnages. J'ai essayé jusqu'à présent de la conversion em pour un homme readble forme, mais sans succès. Essayé InputStreamReader mais je ne pouvais pas faire un bon usage. Mon code source est ci-dessous.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import android.util.Log;
/** 
* 
* @author jon 
*/ 
public class Decompress { 
private String _zipFile; 
private String _location;
public Decompress(String zipFile, String location) { 
_zipFile = zipFile; 
_location = location; 
_dirChecker(""); 
} 
public String unzip(String desiredFile) { 
String strUnzipped = ""; 
try  { 
FileInputStream fin = new FileInputStream(_zipFile); 
ZipInputStream zin = new ZipInputStream(fin); 
ZipEntry ze = null; 
while ((ze = zin.getNextEntry()) != null) { 
Log.v("Decompress", "Unzipping " + ze.getName()); 
if(ze.isDirectory()) { 
_dirChecker(ze.getName()); 
} else { 
//FileOutputStream fout = new FileOutputStream(_location + ze.getName());
/**** Changes made below ****/  
if (ze.getName().toString().equals(desiredFile)) {                  
byte[] bytes = new byte[(int) ze.getSize()];
if (zin.read(bytes, 0, bytes.length) == bytes.length) {
strUnzipped = new String(bytes, "UTF-8");
}
else {
strUnzipped = "Read error...";
}
/*** REMOVED
if (ze.getName() == desiredFile) {
for (int c = zin.read(); c != -1; c = zin.read()) {
strUnzipped += c;
//fout.write(c); 
} */
}
zin.closeEntry(); 
//fout.close(); 
} 
} 
zin.close(); 
} catch(Exception e) { 
Log.e("Decompress", "unzip", e); 
}
return strUnzipped;
} 
private void _dirChecker(String dir) { 
File f = new File(_location + dir); 
if(!f.isDirectory()) { 
f.mkdirs(); 
} 
} 
}
InformationsquelleAutor Daniel | 2011-07-20