web-dev-qa-db-fra.com

Comment imprimer le contenu d'octets bruts d'un tableau d'octets [] vers stdout en Java?

Je fais le même projet que celui décrit ici:

Envelopper les données dégonflées au format gzip

Mon problème est que lorsque j'essaie d'imprimer des octets, j'obtiens des résultats étranges. Mes problèmes surviennent dans le code suivant (Désolé pour mon mauvais choix de variables):

    for(int k = 0; k < head.length; k++){
        System.out.write(head[k]);
    }

    for(int m = 0; m < a.size(); m++){
        int comprlength = a.get(m).getclength();
        for(int ii = 0; ii < comprlength; ii++){
            System.out.write(a.get(m).getcompr()[ii]);
        }
    }
    for(int j = 0; j < f1.length; j++){
        System.out.write(f1[j]);
    }
    for(int ll = 0; ll < total_d.length; ll++){
        System.out.write(total_d[ll]);
    }

Les deux dernières boucles for n'impriment pas le contenu de leurs tableaux d'octets. Ainsi, j'obtiens une erreur de fin de fichier inattendue lors de l'utilisation de gzip. La chose étrange est que si je commente le deuxième bloc for-loop (le bloc avec les variables m et ii), rien ne s'imprime.

Alors, comment imprimer correctement le contenu de mes tableaux d'octets? Pourquoi la première boucle for s'affiche-t-elle correctement lorsque la deuxième boucle for n'est pas commentée et pourquoi n'imprime-t-elle rien si cette seconde boucle for est commentée?

ÉDITER:

Pour être plus précis:

Je veux écrire les octets bruts. Et je veux le faire pour qu'il soit juste l'un après l'autre pour chacun de mes tableaux d'octets

12
XCBaller

En supposant que votre tableau d'octets est appelé buf :

 System.out.println(Arrays.toString(buf));

Edit: Il semble que ce que vous voulez vraiment faire, c'est écrire vos octets sur stdout, pas les imprimer. Voir http://docs.Oracle.com/javase/6/docs/api/Java/io/PrintStream.html pour la différence entre imprimer dans un flux et y écrire. Le moyen le plus simple devrait être d'appeler la méthode write (byte [] b):

System.out.write(buf);
43
Gustav Grusell