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 :

[Débutant] problème avec les IO de java


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 28
    Points
    28
    Par défaut [Débutant] problème avec les IO de java
    Salut à tous,
    mon problème c'est que je veux lire et écrire dans le même fichier texte (test),mais mon programme ne fonctionne pas correctement , car je trouve le fichier texte (test) vide après l'exécution
    voici le 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
    import java.io.*;
    public class ModifierFichier{
      public static void main(String[] args)throws IOException {
        RandomAccessFile fichier = new RandomAccessFile("test.txt","rw");
        FileWriter FW = new FileWriter("test.txt");
        BufferedWriter copie=new BufferedWriter(FW);
        // lecture
        String line; 
        while((line=fichier.readLine())!=null) {
          if("informatique".equals(line))  {
            line="#"+line;
          }
          copie.write(line);
          copie.newLine();
        }
        fichier.close();
        copie.close();
      }
    }

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Tu as un EOFException à la fin de l'exécution, non?

    Met les .close() dans un bloc finally...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 28
    Points
    28
    Par défaut
    ça n'a pas encore marché avec le bloc Finally

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 28
    Points
    28
    Par défaut
    Merci quand même Rom

  5. #5
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Attention je pense à la partie ou tu écris dans le fichier. En général la méthode lance une exception après avoir terminé son job. OutputStream.write

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    • Pourquoi utiliser un RandomAccessFile ? Tu n'utilises pas les spécificité de cette classe ! Et pourquoi l'ouvrir en lecture/écriture alors que tu ne l'utilise que pour lire ?
    • Tu ouvres en même temps deux flux sur le fichier, dont une en écriture (FileWriter) le fichier est vidé et donc il n'y a plus rien à lire dedans...


    Lorsqu'on veut modifier un fichier, on a deux choix possibles :
    1. On utilise un fichier temporaire qui recevra toutes les modifications, et à la fin on remplace le fichier.
    2. On utilise un buffer en mémoire (mais cela est plus gourmand en mémoire)


    a++

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 28
    Points
    28
    Par défaut
    Salut à tous,
    En fait vous avez raison adiGuba, le problème c'était dans la création de deux flux sur le fichier, donc j'ai utilisé comme vous m'avez proposé un fichier temporaire, et ça a marché
    J'ai pris toutes vos remarques en considération , Merci
    Voici le code finale:
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
     
     
    public class ModifierFichier {
     
    	public static void main(String[] args) {
    		Lire();// Appelle de la foction Lire()
    		Ecrire();//Appelle de la foction Ecrire()
     
     
    	}
    	/* la foction Lire() lit dans le fichier test ,et écrit dans le fichier temporaire
    	tous ce qui est dans le fichier test avec toutes les modifications nécessaires
    	(selon le programme)*/
    	public static  void Lire()
        {
        try 
          {
     
        	BufferedReader in = new BufferedReader(new FileReader("test.txt"));
            BufferedWriter out = new BufferedWriter(new FileWriter("temporaire.txt"));
     
        	String line; 
        	 while((line=in.readLine())!=null)
        	 {
        	 if("informatique".equals(line))     line="#"+line;
        	 out.write(line);
        	 out.newLine();
     
        	 }
          in.close();
          out.close();
          }
       catch (IOException e) 
         {
         System.out.println("erreur dans: " + e);
         }
        }
    	/*La fonction Ecrire() lit dans le fichier temporaire, et écrit dans 
    	 le fichier test tous ce qui est dans le fichier temporaire*/
    	public static void Ecrire(){
    		 try 
    	     {
    	    BufferedReader in = new BufferedReader(new FileReader("temporaire.txt"));
    	   	BufferedWriter out=new BufferedWriter(new FileWriter("test.txt"));
     
    	   	String line; 
    	   	 while((line=in.readLine())!=null)
    	   	 {
     
    	   	 out.write(line);
    	   	 out.newLine();
     
    	   	 }
    	     in.close();
    	     out.close();
    	     }
    	  catch (IOException e) 
    	    {
    	    System.out.println("erreur dans: " + e);
    	    }
     
     
     
    	 }
     
    }

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

Discussions similaires

  1. [débutant] problème avec les arguments de fopen
    Par Anouschka dans le forum C++
    Réponses: 13
    Dernier message: 23/02/2006, 14h56
  2. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54
  3. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  4. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  5. [Débutant]Problème avec les timers
    Par mickael777 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 11h00

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