La décompression des fichiers par programmation sous Android

Je suis de télécharger un dossier zip et économie dans le dossier spécifique dans mon appareil Android. Ma demande n'est pas accès au dossier tel qu'il est zippé. Je tiens à décompresser le dossier après le téléchargement de serveur et de les enregistrer dans le dossier spécifique.

Et mon code est ici:

public void DownloadDatabase(String DownloadUrl, String fileName) {
try {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/timy/databases");
if(dir.exists() == false){
dir.mkdirs();  
}
URL url = new URL("http://myexample.com/android/timy.zip");
File file = new File(dir,fileName);
long startTime = System.currentTimeMillis();
Log.d("DownloadManager" , "download url:" +url);
Log.d("DownloadManager" , "download file name:" + fileName);
URLConnection uconn = url.openConnection();
uconn.setConnectTimeout(TIMEOUT_SOCKET);
InputStream is = uconn.getInputStream();
ZipInputStream zipinstream = new ZipInputStream(new BufferedInputStream(is));
ZipEntry zipEntry;
while((zipEntry = zipinstream.getNextEntry()) != null){
String zipEntryName = zipEntry.getName();
File file1 = new File(file + zipEntryName);
if(file1.exists()){
}else{
if(zipEntry.isDirectory()){
file1.mkdirs();
}
}
}
BufferedInputStream bufferinstream = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while((current = bufferinstream.read()) != -1){
baf.append((byte) current);
}
FileOutputStream fos = new FileOutputStream( file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec");
}
catch(IOException e) {
Log.d("DownloadManager" , "Error:" + e);
e.printStackTrace();
}
}

Et mon logcat est diffusée sur erreur. Juste le dossier est créer dans mon appareil et n'ont pas de fichiers à télécharger avec décompressé. Sans l'aide de inputZipStream méthode, puis mon dossier zippé est de télécharger et d'enregistrer dans la carte sd. Quand je veux le décompresser, il n'est pas le cas.