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

Java Discussion :

PrintStream méthode write


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut PrintStream méthode write
    salut tout le monde,
    soit le programme simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static void main(String[] args) {
     
    	String s = "Hello";
    	byte[] b =s.getBytes();
    	for(int i = 0;i<b.length;i++)
         System.out.write(b[i]);
     
    	}
    quand j'exécute ce programme rien n'est affiché sur la console !!!

    par contre le programme suivant affiche le résultat Hello:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void main(String[] args) {
     
    	String s = "Hello";
    	byte[] b =s.getBytes();
    	System.out.write(b,0,b.length);
     
    	}
    - pour quoi le premier programe n'a rien affiché?? et le deuxième a affiché un résultat qui n'est pas attendu (j'attend l'affichage du code ASCII de Hello)
    à ma connaissance write(int i) : écrite l'octet i sur le stream n'est ce pas?. donc le premier programme doit afficher le code ASCII de "Hello" ??
    et pour quoi le deuxième programme a fait la conversion des octets vers des caractères (c'est la rôle de la méthode print) ??

    merci

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    pour quoi le premier programe n'a rien affiché??
    Parce que les flux sont bufferisés et que le programme c'est terminé sans que les données dans le tampon aient pu être vidée.
    Si tu rajoute un System.out.flush() avant la fin de ton programme pour forcer a vider le tampon, il se comportera comme le second programme

    à ma connaissance write(int i) : écrite l'octet i sur le stream n'est ce pas?
    Tout a fait.

    donc le premier programme doit afficher le code ASCII de "Hello" ??
    et pour quoi le deuxième programme a fait la conversion des octets vers des caractères (c'est la rôle de la méthode print) ??
    Le write() ne convertit rien, bien au contraire. Son rôle est de faire une écriture basique des octets sans aucune mise en forme.
    Par contre la console est idiote : elle ne sait pas ce qu'est un nombre et ne gère que du texte. Toutes les données qu'elle reçoit sont traitées comme des code ASCII a afficher.

    Par contre, print() fera la conversion du nombre en un chaine de caractère représentant ce nombre avant de l'envoyer sur la console.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    merci infiniment pour la réponse trés claire:

    juste une autre question pour confirmer quelque chose:

    dans les deux programmes la console a fait la conversion lors de l'affichage selon l'encodage et le codage utilisés par le systeme exploitation ??

    merci

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Oui.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    Citation Envoyé par Uther Voir le message
    Oui.
    merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDF] Méthode Write() et méthode Text()
    Par crati dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/03/2009, 18h38
  2. méthode write de la classe FileOutputStream
    Par new_wave dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 16/09/2008, 17h16
  3. Port sériel et méthode Write(byte[],offset,length)
    Par TheCaribouX dans le forum C#
    Réponses: 6
    Dernier message: 02/06/2008, 17h10
  4. [flux] Différence de la méthode write
    Par quilo dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 27/09/2006, 11h18
  5. Méthode 'Write' undeclared
    Par def_jam_vendetta dans le forum C++
    Réponses: 11
    Dernier message: 25/02/2005, 15h37

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