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

Entrée/Sortie Java Discussion :

Comment connecter un OutputStream à un Reader?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut Comment connecter un OutputStream à un Reader?
    Bonjour,

    J'essaie actuellement de rediriger la sortie d'un objet JSch (de la bibliothèque JSch, qui gère le ssh) vers un reader, pour pouvoir analyser le résultat ligne par ligne.
    Cette quesiton est générale, et ne concerne pas que JSch : Comment connecter un OutputStream à un InputReader?

    En effet, toutes les méthodes que je trouve associent toujours les Inputs aux Readers, et les Outputs aux Writers. Mais comment faire quand on veut simplement lire et interpréter l'output d'un OutputStream?

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    import com.jcraft.jsch.*;
     
    	(...)
     
    	//connexion
    	JSch jsch=new JSch();
    	session=jsch.getSession(user, host, 22);
    	session.connect();
     
    	//obtention du canal sous forme de terminal
    	Channel SSHchannel=session.openChannel("shell");
     
    	//recupération du flux de sortie
    	OutputStream out = SSHchannel.getOutputStream();
     
    	//ce que j'aimerais pouvoir faire (mais ne sais pas comment faire) :
    	BufferedReader reader = new BufferedReader(out); //on ne peut pas passer un OutputStream à un Reader
     
    	//lecture depuis la sortie de ssh
    	line = reader.readLine();
    J'ai essayé ceci, mais on n'a pas le droit de construire un PipedOutputStream à partir du simple OutputStream que j'ai récupéré et que je veux lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	PipedInputStream in = new PipedInputStream(new PipedOutputStream(SSHchannel.getOutputStream())); //interdit
    	BufferedReader reader = new BufferedReader(in);

    Symétriquement, je me demande comment envoyer le contenu d'un Writer.println vers un InputStream, même si je crois avoir trouvé:
    (contrairement à PipedOutputStream, cette fois on a bien le droit de construire un PiedInputStream à partir d'un simple InputStream).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	PipedInputStream pin = new PipedInputStream(SSHchannel.getInputStream());  
    	PipedOutputStream pout = new PipedOutputStream(pin);  
    	PrintStream writer = new PrintStream(pout);  
     
    	writer.println("tralala");

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Je crois qu'en réalité tous mes problèmes viennent du fait que je n'avais absolument pas compris comment marchent les inputs et les outputs :
    - Je pensais qu'un OutputStream est ce qui sort de l'objet qui l'a fournit.
    - Alors qu'en réalité c'est un point d'entrée, fourni par l'objet pour lui envoyer des données.

    Bref, object.getOuputStream() sert à faire entrer des données dans l'objet, object.getInputStream() sert à en faire sortir des données.

    ça me perturbe, mais si les noms ont été choisis de cette façon c'est bien qu'à la longue ça doit paraître logique.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Parce qu'un OutputStream est quelque chose qui génère une sortie, alors qu'un InputStream permet de lire une entrée.

    On ne s'intéresse pas à ce qu'ils prennent ou ce qu'ils donnent, mais à ce à quoi ils servent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [ADO.Net][VB.NET]Comment connecter MySQL via localhost ?
    Par le_ben2000 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/05/2007, 20h44
  2. [SAGE ODBC] Comment connecter une BDD ?
    Par aqwz dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 14/09/2006, 10h00
  3. Réponses: 4
    Dernier message: 22/12/2005, 11h21
  4. [SQL serveur][DELPHI7]comment connecter ?
    Par arnaud_marechal dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/09/2004, 17h50
  5. comment connecter VC++ et (java ou VB)
    Par Tray dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 18/11/2002, 13h51

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