2009-11-18 8 views
3

Je développe une application BlackBerry dans laquelle je dois décompresser un fichier compressé avec PKZIP. Le paquet pourrait contenir un fichier, ou 10; cela variera dans chaque cas. Je sais que l'API BlackBerry a un support natif pour GZip et Zlib, bien que je sois à peu près sûr que ces méthodes ne seront pas utiles dans mon cas. Il ne semble pas que je puisse extraire les fichiers individuels en utilisant ces appels.BlackBerry - Déballez le fichier ZIP

J'ai essayé JZlib (http://www.jcraft.com/jzlib/), qui a bien été compilé, mais il ne semble pas que les méthodes qui y sont contenues vont me permettre d'extraire les fichiers individuels.

Il semble que cela soit possible, car il existe une application appelée Ziplorer (http://www.s4bb.com/software/ziplorer/) qui prétend effectuer cette procédure exacte. Comment ils le font, cependant, m'échappe.

Donc, je suis après des heures de googling. Je salue tout aperçu de mon problème à bras ouverts.

+0

Avez-vous envisagé des problèmes de licence avec la publication de votre application pour (je suppose) des bénéfices tout en utilisant une ressource sous licence gnu ou open source? –

+0

L'application sera effectivement gratuite, donc je ne crois pas qu'il y aura des problèmes de licence là-bas. – harrywynn

Répondre

0

Les algorithmes «zip» sont généralement des ramifications de l'algorithme Lempel-Ziv-Welch. Ce sont des algorithmes de compression de flux assez efficaces, mais à cause de leur fonctionnement, vous ne pouvez pas commencer à décompresser des points aléatoires dans le fichier, vous devez commencer dès le début.

Tout produit qui prétend être capable de décompresser un fichier à partir d'un fichier zip doit encore décompresser tout ce qu'il contient dans le fichier zip afin de savoir comment décrypter le fichier donné, ou même, d'ailleurs, où le fichier est dans les archives.

+0

Bien que ce soit vrai, ce n'est pas une réponse à la question de l'auteur original. Il y a beaucoup d'API/bibliothèques zipfile qui récupèreront un seul fichier depuis l'intérieur de l'archive - par ex. La bibliothèque zipfile de Python. Trivialement, vous pouvez le faire en commençant au début, en décodant et en jetant tout ce qui n'est pas le fichier que vous voulez. –

Questions connexes