Problème avec If - Else.

Résolu
romainca Messages postés 5 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 23 juin 2006 - 23 juin 2006 à 10:00
romainca Messages postés 5 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 23 juin 2006 - 23 juin 2006 à 11:11
Bonjour,

J'ai actuellement un problème en Java:
Je désire réaliser un petit utilitaire de Mises à jour, qui va télécharger un fichier sur un serveur (ce fichier contient le numéro de la dernière version du programme) et compare ce numéro avec la version de l'utilisateur.
Si l'utilisateur a la bonne version, un JOptionPane est retourné.
C'est là ou je bloqué, les if je sait les faire mais ils ne fonctionnent pas.

Donc voilà le code et après le problème.
Le code de la classe principale qui récupère la dernière version:

<sup>package maj;
import java.net.*;
import java.io.*;
 

public class GetNewVersion {

    String HOST = "http://jeuxinfos.info/version.txt";
   

  public GetNewVersion() {
 
 
      try {
       
        URL racine = new URL("http://jeuxinfos.info/version.txt");
        
         getFile(racine);
      }
      catch (MalformedURLException e) {
        System.err.println(HOST + " : URL non comprise.");
      }
      catch (IOException e) {
        System.err.println(e);
      }

 
  }

  public static void getFile(URL u) throws IOException {

    URLConnection uc = u.openConnection( );

    String FileType = uc.getContentType( );

    int FileLenght = uc.getContentLength( );

    if (FileLenght == -1 ) {
      throw new IOException("Fichier non valide.");
    }
   
    InputStream brut = uc.getInputStream( );
    InputStream entree = new BufferedInputStream(brut);
    byte[] donnees = new byte[FileLenght];
    int BitRead = 0;
    int deplacement = 0;
    while (deplacement < FileLenght) {
       BitRead = entree.read(donnees, deplacement, donnees.length-deplacement);
       if (BitRead == -1) break;
       deplacement += BitRead;
    }
   
    entree.close( );
   
    if (deplacement != FileLenght) {
      throw new IOException("Nous n'avons lu que " + deplacement
       + " octets au lieu des " + FileLenght + " attendus");
    }
  
    String FileName = u.getFile( );
  
    FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
  
    FileOutputStream WritenFile = new FileOutputStream(FileName);

    WritenFile.write(donnees);

    WritenFile.flush( );

    WritenFile.close( );
 
  }
 
  public static void main (String [ ] args)
  {
      new GetNewVersion();
      LireDerniereVersion dern = new LireDerniereVersion();
      dern.lire();
  }
 

 
}
Et le code de la classe qui vérifie (le problème est là):

package maj;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

import javax.swing.JOptionPane;
import java.lang.String;

public class LireDerniereVersion {
   
    public void lire()
    {
       
        try
        {
       
          
            FileReader fr = new FileReader("version.txt");
            BufferedReader br = new BufferedReader(fr);
           
            String texte = "";

            texte = texte + br.readLine();
                    
              
           
           
           

           
            //Affichage du txt
           
            String version1 = "1";
           
            if ((texte == "1"))
            {
                System.out.println("Derniere version");
                JOptionPane.showMessageDialog(null, "Vous avez la dernière version du programme: version " +texte+".", "Pas de problème", JOptionPane.INFORMATION_MESSAGE);
               
               
            }
            else
            {
                System.out.println("Vieille version");
                JOptionPane.showMessageDialog(null, "Nouvelle version du programme disponible: version " +texte+"." +" Votre version: "+version1+".", "Nouvelle version!!", JOptionPane.ERROR_MESSAGE);
                //Je rajouterai du code après, quand le if fonctionnera.
                   
            }
           
                    br.close();
           
       
        }
        catch(IOException ioe){System.out.println("erreur : " + ioe);}
       
       
   
    }

   

}
Donc le problème est que le if fonctionne mal. Par exemple, j'ai la dernière version et il me dit que j'ai une version trop ancienne. Il me dit "Vous n'avez pas la dernière version. Dernière version: 1. Votre Version: 1."

Merci de votre aide

</sup>

2 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
23 juin 2006 à 10:54
le code marche mal car tu compare deux chaine avec == et non avec equals ou compareTo.
je crois que tu t'y prend extremment mal
le code est propre et tous mais :
j'ai deja fait ce que tu essai de faire et je n'ai pas du tout proceder  voila comment j'ai fait :
sur le serveur j'ai créé un fichier contenant la derniere version avec des url qui indique les fichier a mettre a jour
cote client j'ai un fichier qui contien l version actuelle installé
si le numero de version coté serveur est plus elevé que celle du client alors on telecharge tout

si tu peux attendre jusqu'a demain je te dirais ce que j'ai fait exactement car ce code etait mon premier code reseau et je ne me souviens que des grande lignes

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
3
romainca Messages postés 5 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 23 juin 2006
23 juin 2006 à 11:11
Ok, merci ca marche.
Oui, c'est en bétâ après, la version actuelle sera dans un fichier texte mais là je testai déjà.
0
Rejoignez-nous