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 :

Pb de boucle !


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut Pb de boucle !
    En gros je lis un fichier, qui contient par exemple:


    # xmcd

    #

    DISCID=c10ab60e

    DTITLE=Katherine Jenkins / Premiere

    TTITLE0=Java

    PLAYORDER=


    Ce qui est en bleu dans ce qui suit me permet d’afficher ce qui suit après DTITLE=
    Ce qui est en rouge est censé afficher ce qu’il y a après TITLE0= ,
    mais apparemment ca sort de la boucle dès que ca a trouvé ce qui est en bleu. Si vs savez pq, dites le moi !

    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
    49
    50
    51
    52
    53
     
    package serveur;
     
    import java.net.*;
    import java.io.*;
     
    public class ClientThread extends Thread {
     
        private Socket socket;
        private static String START = "DTITLE=";
        private static String TTITLE0 = "TTITLE0=";
     
        /** Creates a new instance of ClientThread */
        public ClientThread(Socket clientSocket) {
            this.socket = clientSocket;
        }
     
        public void run()
        {
            try
            {
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     
                String s;
                String discId;
                discId = in.readLine();
                BufferedReader bf = new BufferedReader(new FileReader(discId));
     
                s = bf.readLine();
     
                while ((s = bf.readLine()) != null) {  
                   if (s.startsWith(START)) {
                   out.println("s est" + s.substring(START.length()));
                   }
                   if (s.startsWith(TTITLE0)) {
                   out.println("TITLE0 est " + s.substring(TTITLE0.length()));
                   }
                }
     
                System.out.println("Request for:" + discId);
                out.println("s est " + s);
                out.println("Answer");
     
                out.close();
                in.close();
                socket.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if (s.startsWith(TTITLE0)) {
    out.println("TITLE0 est " + s.substring(TTITLE0.length()));
    }
    est dans ta boucle

    Cela signifie que tu est arrive a la fin du fichier avant d'afficher le contenu de ta ligne.

  3. #3
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    Je suis pas sûr de comprendre, car si j'inverse les 2 if (...) {...}, c'est toujours le 1er if qui est excuté pas le 2ème.
    Même en créeant un autre while ca marche pas....

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    si tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ((s = bf.readLine()) != null) {
    out.println("[" + s + "]");
    }
    est-ce que tu as bien tout le contenu de ton fichier qui apparaît ligne par ligne?

  5. #5
    Membre habitué
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    Non, j'ai [#] qui apparaît.

    ( en sachant que la 1ere ligne de mon fichier est # xmcd)

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Il t'affiche en fait la seconde ligne de ton fichier (#) car tu lis la première ligne de ton fichier avec s = bf.readLine(); juste avant ta boucle while. Ceci dit, je ne vois pas pourquoi il ne lit pas tout ton fichier...

    Si tu remplaces tous les out... par System.out... pour voir ce que ça donne, des fois que ce serait un pb réseau. Mets également des flush().

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 17h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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