IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Créer un fichier a partir d'une variable au format ArrayList<Byte>


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Créer un fichier a partir d'une variable au format ArrayList<Byte>
    Bonjour a tous,

    J'ai implémenté l'algorithme de huffman pour un projet scolaire.
    La premiere version de mon programme fonctionne, mais affiche simplement le résultat de la compréssion grace a une fonction qui affiche ma variable ArrayList<Byte> qui contient la résultat de l'encodage par l'algorithme de huffman.
    Je peut donc comparer la taille de cette variable par rapport a la taille de la variable contenant le fichier original (a compresser) et celle ci est bien infèrieure donc j'ai réussi a compresser ce fichier.

    Jusque la tout va bien, mais pour les besoins de mon projet, il faut bien entendu que je créé un fichier compréssé et la se trouve mon problème.

    Si je converti ma variable ArrayList<Byte> en String pour pouvoir l'écrire dans un fichier, le fichier compréssé pèse alors environ 2 fois plus lourd que le fichier original ! Donc, ca ne compresse pas du tout, mais bien au contraire !
    La est mon problème, je suis bloqué la dessus, et je ne sais pas quoi faire.

    Qu'en pensez vous ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 631
    Points
    21 631
    Par défaut
    Pour commencer tu ne devrais pas construire ton fichier compressé dans un ArrayList<Byte>, l'auto-inbox/outbox va tuer tes performances et ta mémoire.

    Un ByteArrayOutputStream ferait mieux l'affaire et permet d'appeler toByteArray() à la fin pour obtenir un byte[] (dupliqué certes, mais c'est un moindre mal à côté).


    Ensuite, il n'y a aucun besoin de transformer quoi que ce soit en String pour l'enregistrer dans un fichier, je ne vois pas le rapport. En supposant que tu aies un byte[] array, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OutputStream out = new FileOutputStream(new File("mon_fichier_compresse.compress"));
    out.write(array);
    out.close();

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse, je vais opter pour cette solution !
    Je vous tient au courant dès que j'aurai résolu le problème

Discussions similaires

  1. Créer des fichiers excel à partir d'une feuille et d'une liste
    Par chmouf dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2014, 21h57
  2. Créer un fichier EBCDIC à partir d'une table SAS
    Par karukeracoon dans le forum SAS Base
    Réponses: 2
    Dernier message: 19/05/2011, 11h28
  3. Comment créer un fichier TEXT à partir d'une page HTML ?
    Par Zebulon777 dans le forum VBScript
    Réponses: 0
    Dernier message: 17/09/2010, 15h23
  4. Créer un fichier XML à partir d'une table
    Par Imageek dans le forum SQL
    Réponses: 2
    Dernier message: 06/03/2010, 16h51
  5. Lecture fichier XML à partir d'une variable
    Par Krusti dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 03/02/2009, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo