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 :

Lecture d'un fichier sur un poste client


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut Lecture d'un fichier sur un poste client
    Bonjour,
    J'ai un problème avec la lecture d'un fichier, voici mon problème:
    j'ai une application client/serveur (avec RMI).
    une des classes de l'application cliente contient les instructions de lecture d'un fichier suivantes:
    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
     
     String monFichier = "C:\\session.txt";
            String fichierContenu= "";
            int num_session = 0;
          try
          {
            RandomAccessFile raf = new RandomAccessFile(monFichier, "r");
            String ligne;
            while ( (ligne = raf.readLine()) != null )
            {
              fichierContenu += ligne;
            }
            System.out.println("contenu du fichier: "+fichierContenu);
            num_session = Integer.parseInt(fichierContenu.trim());
          }
        catch (IOException e){ System.out.println("erreur dans: " + e);}
            //appel d'une méthode du serveur
            Collection equip = port.getEquip(num_session);
    lorsque je lance le serveur ensuite le client sur la machine "serveur", la lecture du fichier se fait normalement, mais quand je lance le serveur sur la machine "serveur" et le client sur une autre machine "cliente" il me sort une erreur : "C:/session.txt" (le fichier spécifié est introuvable) or que le fichier existe dans le c:/ de la machine "cliente".
    je n'y comprend rien
    Quel est le problème dans ce cas?
    merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,
    tu utilise rmi donc le client cherchera le fichier "C:/session.txt" chez le serveur car tout simplement le code des fonctions sera éxécutés au serveur ce qui explique le problème. c'est un des principaux notions des systèmes distribués.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut
    salut,
    non, pas du tout, la portion du code se trouve dans une classe qui se trouve rien qu'au niveau du client et donc elle est executée au niveau du client (grace à la machine virtuelle de JAVA) et non pas du serveur. les méthodes du serveur sont executées à son niveau que lorsqu'elles sont appelées, or ce n'est pas le cas ici.
    Cela est confirmé par :
    1- quand un fichier texte existe au niveau du C:/ du serveur, ça fonctionne pas, ce qui explique que le code est executé coté client.
    2- je vient de faire un test sur un autre pc et par miracle ça marche.
    donc ça doit être une question de configuration de PC, reste à savoir ce que ça peut être.
    Si quelqu'un a une réponse, ça serait sympa de nous éclairer.
    merci encore.

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Puisque ton code est local au client, je ne vois pas de problème.
    QQ pistes :
    - respectes-tu bien la casse dans le nom du fichier
    - n'as-tu pas oublié - sur la machine qui ne marche pas - de doubler le backslash (ou bien mis un double slash à la place) --> pour éviter ce problème, ne pas taper le séparateur en dur dans les chaines, utiliser File.separatorChar.
    - Si ce fichier est créé par ton application java, as-tu bien géré la fermeture du fichier (méthode close() dans un bloc finally) ?
    etc.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut
    Bonjour,
    merci pour ces indications,
    1 - le nom du fichier est "session .txt" donc pas de problème de casse.
    2 - voici ma déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String monFichier = "C:\\session.txt";
    , ici le slash est doublé.
    3 - le fichier existe déja au préalable, il n'est pas créé par l'application.
    jusque là je crois que j'ai respecté tes indications!
    seulement j'ai pas bien saisi cela:
    pour éviter ce problème, ne pas taper le séparateur en dur dans les chaines, utiliser File.separatorChar.
    merci et bonne journée à tous.

  6. #6
    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,


    Et si tu essayes de créer le fichier depuis Java ? Juste pour voir...

    Sinon File.separatorChar permet de faire des programmes portable en évitant de mettre des chemins spécifiques à un système d'exploitation...

    a++

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Pour compléter par un exemple :
    File.separatorChar vaudra "\" sur des systèmes d'exploitation de type windows et "/" sur des systèmes d'exploitation de type unix.
    Comme l'a dit AdiGuba, cela évite de devoir modifier tous tes fichiers sources et de recompiler le jour où tu migres l'application vers une machine possédant un autre système d'exploitation.
    Et sans avoir à migrer de machine, cela permet de distribuer l'application sans se soucier l'OS cible --> portabilité, l'intérêt majeur de java.

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Par défaut
    merci pour ces explications!

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/10/2011, 18h26
  2. Téléchargement d'un fichier sur le poste client
    Par Général03 dans le forum Langage
    Réponses: 5
    Dernier message: 03/11/2009, 22h34
  3. visualiser un fichier sur un poste client
    Par carinia dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 15/09/2009, 15h12
  4. [FileUpload]Lecture d'un fichier sur le poste client
    Par Schuss dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 01/07/2008, 20h44
  5. Réponses: 2
    Dernier message: 25/09/2007, 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