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 :

Sortir d'un bufferedReader()


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut Sortir d'un bufferedReader()
    Bonjour,

    J'ai un petit souci avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try {
      BufferedReader in = new BufferedReader(new   InputStreamReader(client.getInputStream()));//
      int c = in.read();
      StringBuffer build = new StringBuffer();
      while (c != -1) {
        build.append((char) c);
        c = in.read();
      }
     
      in.close();
    } catch (Exception e) {
      System.out.println(e.getMessage() + "\nErreur bufferedReader (Time)");
    }
    Dans mon projet, il m'est possible que le bufferedReader attende sans rien recevoir. Je voudrais donc pouvoir sortir du block try au bout de 1sec mais je ne vois pas trop comment faire.

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    C'est bon, j'ai pu trouver la solution. C'est sur au niveau du getInputStream que je devais agir. J'ai donc utilisé setReadTimeout() pour éviter de bloquer mon programme.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu utilises quel type de flux ? En clair c'est quoi "client.getInputStream()" ???


    Sinon c'est un peu H-S mais au lieu d'utiliser un BufferedReader + read(), j'aurais plutôt utilisé directement le Reader avec un buffer perso.
    De plus il manque le try/finally pour la fermeture :
    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
    	try {
    		Reader in = new InputStreamReader(client.getInputStream());
    		try {
    			StringBuffer build = new StringBuffer();
    			char[] cbuf = new char[8192];
    			int len;
     
    			while ( (len = in.read(cbuf)) >0 ) {
    				build.append(cbuf, 0, len);
    			}
    		} finally {
    			in.close();
    		}
    	} catch (Exception e) {
    		// Pas top comme traitement des exceptions :
    		System.out.println(e.getMessage() + "\nErreur bufferedReader (Time)");
    	}

    Attention également à l'encodage : ici tu utilises l'encodage par défaut qui peut varier selon le système...

    a++

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    voici ce que réalisait la méthode getInputStream():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public InputStream getInputStream() throws IOException {
    		return connection.getInputStream();
    	}
    connexion est un URLconnection.

    Pour éviter que mon programme soit bloqué j'ai ajouté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connection.setReadTimeout(TIME_OUT);//TIME_OUT = 1000
    Et pour ce qui est du traitement des execption on va dire que c'est pas mon point fort. Faudrait que je regarde quelques tuto pour améliorer tous ça.

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

Discussions similaires

  1. [Function] N'arrive pas à sortir
    Par bouboussjunior dans le forum ASP
    Réponses: 3
    Dernier message: 14/06/2004, 16h36
  2. Comment sortir d'une dll ?
    Par Fred007 dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2004, 08h21
  3. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  4. Empecher le curseur de sortir du dialog
    Par Gadjo dans le forum MFC
    Réponses: 5
    Dernier message: 18/11/2002, 18h01
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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