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

Android Discussion :

Conversion InputStream en String


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Par défaut Conversion InputStream en String
    Bonjour,

    Je cherche a convertir, comme le dit le titre, un InputStream en String, la conversion n'as pas l'air de poser problème mais rien en s'affiche dans mon edittext :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    	class Looper extends BaseIOIOLooper implements OnClickListener {
     
    		@Override
    		public void setup() throws ConnectionLostException {
                uart = ioio_.openUart(7,13,115200,Uart.Parity.NONE,Uart.StopBits.ONE);
                in = uart.getInputStream();
                out = uart.getOutputStream();
                button_.setOnClickListener(this);
    		}
     
    		public void loop() throws ConnectionLostException, InterruptedException {
     
    				try {
    					in.read();
    					messagein= convertStreamToString(in);
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
    				textin.setText(messagein.toString());
    			Thread.sleep(10);
    		}
     
    		@Override
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    			if(v==button_){
    				sending();
    			}
    		}
     
    		public String convertStreamToString(InputStream is) throws IOException{
    			byte[] buffer = new byte[1024];
    			String result;
    			StringBuffer sb = new StringBuffer();
    			int readIn=0;
     
    			while((readIn = is.read(buffer)) > 0){
    				String temp = new String(buffer, 0, readIn);
    				sb.append(temp);
    			}
     
    			result = sb.toString();
     
    			return result;
    		}
    	}
    Avez-vous une idée ?

    Merci pas avance.

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,
    Ceci devrait marcher

    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
     
    final StringBuilder out = new StringBuilder(); 
     
    // Buffer de lecture
    final byte[] buffer = new byte[bufSize]; 
     
    try {
    	// On ajoute le contenu du flux au StringBuilder
    	for (int ctr; (ctr = in.read(buffer)) != -1;) {
    	     out.append(new String(buffer, 0, ctr));
    	 }
    } catch (IOException e) {
    	  throw new RuntimeException("Ca marche pas !!", e);
    }
     
     // On retourne la chaîne contenant les données de l'InputStream
     return out.toString(); 
    }

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il faudrait déjà savoir en quel charset est l'InputStream.... on ne décode pas de l'UTF-8 comme de l'UTF-16

  4. #4
    Membre confirmé
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Par défaut
    J'avouerais que je ne sais pas, c'est un InputStream provenant d'une liaison série, je suppose que c'est de l'UTF-8.

  5. #5
    Membre confirmé
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Par défaut
    Bonjour,

    Le code fourni par Nico02 ne fonctionne pas auriez-vous une autre solution ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Marche forcément pas... il lit des octets... (sans doute mappés vers des caractères single-byte), et les passe à une String (qui les considère comme des caractère double-byte)....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    InputStream is; // entrée...
     
    StringBuilder out = new StringBuilder();
    int c;
    InputStreamReader reader = new InputStreamReader(is,"UTF-8"); // choisir le charset ici
    while ((c = reader.read()) != -1) 
        out.append(c);
    reader.close();
    return out.toString();
    Autre option (avec un "buffer"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    InputStream is; // entrée...
     
    StringBuilder out = new StringBuilder();
    char[] buffer = new char[BUFFER_SIZE];
    InputStreamReader reader = new InputStreamReader(is,"UTF-8"); // choisir le charset ici
    int l;
    while ((l = reader.read(buffer,0,BUFFER_SIZE)) != -1) 
        out.append(buffer,0,l);
    reader.close();
    return out.toString();

Discussions similaires

  1. conversion inputstream string
    Par Adren dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 31/01/2007, 10h52
  2. Conversion d'un string en hexa
    Par marsupilami34 dans le forum Langage
    Réponses: 3
    Dernier message: 07/07/2005, 09h13
  3. [Débutant] Conversion d'un String en Int
    Par chleuh dans le forum Langage
    Réponses: 9
    Dernier message: 30/12/2004, 13h33
  4. [C#] Conversion d'un string en byte[] et inversement
    Par david71 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/12/2004, 15h10
  5. Réponses: 2
    Dernier message: 21/06/2004, 15h55

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