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.
Vous devez vous connecter pour publier un commentaire.
Cet article est sur la façon d'écrire une classe utilitaire pour extraire les fichiers et les répertoires dans une archive zip compressée, à l'aide intégrée dans l'API Java.
L'java.util.zip paquet fournit les classes suivantes pour l'extraction des fichiers et des répertoires à partir d'une archive ZIP:
ZipInputStream: c'est la classe principale qui peut être utilisé pour la lecture de fichier zip et extraire les fichiers et les répertoires (dossiers) à l'intérieur de l'archive. Voici quelques usages de cette classe:
-lire un fichier zip via son constructeur ZipInputStream(FileInputStream)
-lire les entrées de fichiers et de répertoires via la méthode getNextEntry()
-lire des données binaires de l'entrée en cours via la méthode read(byte)
-près de l'entrée courante par l'intermédiaire de méthodes closeEntry()
-fermer le fichier zip via la méthode close()
ZipEntry: cette classe représente une entrée dans le fichier zip. Chaque fichier ou le répertoire est représenté comme un ZipEntry objet. Sa méthode getName() retourne une Chaîne de caractères qui représente le chemin d'accès du fichier/répertoire. Le chemin est de la forme suivante:
folder_1/subfolder_1/subfolder_2/.../subfolder_n/fichier.ext
Basées sur le chemin d'un ZipEntry, nous re-créer la structure de répertoire lors de l'extraction du fichier zip.
Ci-dessous classe est utilisée pour décompresser télécharger le zip et extraire le fichier et le stocker votre désir emplacement.
Lire Plus
Décompresser Fonction
Initialisation
Pour android, il y a un tiers de la bibliothèque pour être utilisé gratuitement.
cette bibliothèque sera télécharger votre fichier lui-même et extrait automatiquement où vous le souhaitez.
vous pouvez consulter cette bibliothèque ici.
ExtractionLib pour Android