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

avec Java Discussion :

RandomAccessFile aucune sortie


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut RandomAccessFile aucune sortie
    Bonjour,

    Mon programme ne donne aucune sortie, pourtant il compile bien.

    Voici mon code
    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
    import java.io.*;
     
    public class Randomaccess1 
    {
      public static void main(String[]args)throws IOException
      {
          RandomAccessFile raf=new RandomAccessFile("random.text","rw");
          try
          {
              Writer out=new OutputStreamWriter(new FileOutputStream(raf.getFD()),"UTF-8");
              out.write("Programing in C");
              out.flush();
              raf.seek(12);
              out.write("Java");
              out.flush();
          }
          finally
          {
              raf.close();
          }
      }
    }
    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    On ne mélange pas RandomAccessFile et OutputStream sur le même fichier en même temps. Les résultats sont imprévisibles.

    Cela compile parce que ce sont des objets comme les autres et que le compilateur ne peut pas savoir qu'il ne faut pas s'en servir comme ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    pouvez vous m'aider svp
    je suis complétement perdu dans ce randomaccessfile

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    - Tu veux pouvoir naviguer dans le fichier en cours de lecture/écriture, donc RandomAccessFile est le bon choix. Cela n'est pas possible avec des OutputStream ou des Writer.

    - Tu veux écrire du texte en UTF-8. Malheureusement RandomAccessFile n'offre pas de moyen direct d'écrire de l'UTF-8. En revanche il propose des manières d'écrire des octets. Donc tu as besoin de transformer des textes en octets en UTF-8.

    - byte[] bytes = "Programing in C".getBytes("UTF-8"); te permet de créer un tableau de bytes qui contient les octets du texte en question.

    - raf.write(bytes) écrit ces octets dans le fichier sans problème.

    - pour revenir en arrière, le raf.seek() que tu fais fonctionne parfaitement. Le 12 me semble très étrange, par contre. Je me serais attendu à 14.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    vous voulez que j'écris comme ça:
    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
     
     
    import java.io.*;
    public class Randomaccess1 
    {
      public static void main(String[]args)throws IOException
      {
    	  RandomAccessFile raf=new RandomAccessFile("random.text","rw");
    	  try
    	  {
    		  //Writer out=new OutputStreamWriter(new FileOutputStream(raf.getFD()),"UTF-8");
              //raf.write(bytes);
    		  byte[]bytes="Programing in C".getBytes("UTF-8");
    		  //out.write("Programing in C");
    		  raf.write(bytes);
              //out.flush();
              raf.seek(14);
              //out.write("Java");
              raf.writeBytes("Java");
              raf.write(bytes);
              //out.flush();
    	  }
    	  finally
    	  {
    		  raf.close();
    	  }
     
      }
    }
    mais toujours aucun output
    merci votre aide

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par domxaline Voir le message
    vous voulez que j'écris comme ça:
    Non...

    - J'ai pas le souvenir de t'avoir parlé de writeBytes(), qui n'est pas spécialement mauvais mais c'est un peu idiot de mélanger les write() et les writeBytes() : il faut en choisir un des deux et n'utiliser que celui-ci.

    - J'ai pas non plus le souvenir d'avoir recommandé d'écrire deux fois la même chose. La variable bytes n'a pas changé entre les deux raf.write(bytes);. Ça veut rien dire donc.

    Citation Envoyé par domxaline Voir le message
    mais toujours aucun output
    Chez moi ça produit un fichier nommé random.text et qui contient Programing in JavaPrograming in C. Ça veut dire quoi pour toi, "aucun output" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Aucune sortie générée - Problème de cron - wget
    Par sandddy dans le forum Administration système
    Réponses: 1
    Dernier message: 25/03/2009, 18h24
  2. Aucune sortie avec wxString
    Par abcdefg dans le forum wxWidgets
    Réponses: 2
    Dernier message: 21/01/2009, 09h39
  3. [VS 2005] Aucune sortie dans la Console
    Par Ouark dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/02/2008, 11h25
  4. [Imprimante] Aucune couleur à la sortie
    Par Opérateur dans le forum Périphériques
    Réponses: 7
    Dernier message: 03/02/2007, 18h29
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

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