2010-12-13 8 views
3

Je suis en train de développer une application Android 2.2.Ajout d'un gros fichier texte au dossier des ressources

Je veux ajouter quelques gros fichiers texte (4.5MB ou plus) au projet Android.

D'abord je ne sais pas si je peux ajouter ce genre de gros fichiers dans le dossier des ressources. Mais, si je peux, est-il possible de les comprimer?

Comment compresser des fichiers? et décompresser?

Une autre meilleure façon d'ajouter de gros fichiers texte au projet Android?

Merci.

+1

L'appareil n'aura probablement pas la RAM pour charger ce fichier tout de suite quand vous essayez de l'utiliser quand même. –

Répondre

3

Les fichiers de plus de 1 Mo placés dans le dossier des actifs ne seront pas lisibles depuis votre application (une exception sera générée). C'est parce qu'ils sont compressés pendant le processus de construction, et donc le téléphone nécessite des ressources substantielles pour les décompresser sur le combiné.

Je crois que vous pouvez les placer dans le dossier brut, où ils ne seront pas compressé ou utiliser une extension qui AAPT suppose déjà comprimé (voir here)

Cependant, ce n'est pas bon d'avoir un texte 4,5 MB fichier décompressé assis dans l'APK, c'est l'espace gaspillé qui pourrait être mieux géré. Essayez plutôt de télécharger les données lors de la première utilisation, ou de fractionner le fichier en morceaux, comme suggéré précédemment, afin que AAPT puisse le compresser.

+1

« Fichiers sur 1Mo ... » j'ai vu tant de fois sur stackoverflow, mais ne peut pas pour la vie de me trouver dans la documentation. Avez-vous un lien vers où cela est indiqué? – matt

1

Vous pouvez, mais parfois il donne des problèmes. Vous n'avez pas à le compresser, car le package lui-même est compressé (le .APK), en fait, tout ce que vous stockez dans le dossier assets est décompressé lorsque vous le lisez. En ce qui concerne la taille du fichier, vous pouvez le couper et mettre des parties plus petites du fichier dans le dossier des actifs.

0

Je crois que le répertoire des ressources (sauf raw) est déjà compressé. De plus, l'Android Market permettra bientôt des apks de 50MB. Essayez-le d'abord, puis voyez si vous avez des problèmes.

0

Vous devez effectuer un travail de fragmentation pour ce fichier texte de 4,5 Mo. Où vous devez diviser le fichier texte en cinq fichiers avec une taille maximale de 1 Mo. Là encore, vous devez les rejoindre comme ceci:

 OutputStream databaseOutputStream = new FileOutputStream(outFileName); 
     InputStream databaseInputStream; 

     byte[] buffer = new byte[1024]; 
     int length; 

     databaseInputStream = myContext.getResources().openRawResource(
       R.raw.outfileaaa); 
     while ((length = databaseInputStream.read(buffer)) > 0) { 
      databaseOutputStream.write(buffer); 
     } 
     databaseInputStream.close(); 


     databaseInputStream = myContext.getResources().openRawResource(
       R.raw.outfileaba); 
     while ((length = databaseInputStream.read(buffer)) > 0) { 
      databaseOutputStream.write(buffer); 
     } 
     databaseInputStream.close(); 
     databaseOutputStream.flush(); 
     databaseOutputStream.close(); 
2

Une autre approche est que vous devez copier votre fichier sur la carte SD lors de la première exécution à l'aide IOUtils. Ici aussi soyez prudent aussi parce que si vous copiez chaque octet alors plus de ressources seront occupées.

Cela fonctionne pour moi, je devais mettre 30MB grand fichier zip dans le dossier Assets en raison de l'exigence du client. Pouvez-vous scinder les fichiers texte en plus petits morceaux?

Questions connexes