Lire et ecrire dans un fichier java

Résolu
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014
- Modifié par Whismeril le 8/04/2014 à 11:12
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014
- 8 avril 2014 à 16:42
salut , voici mon code que je souhaite a travers lui copier des données a partir d'un fichier texte mais malheureusement le fichier cible est vide et si j'enleve le if le fichier est copié mais pas de retour en ligne dans le fichier cible
aidez moi svp
public class maClass {

  public static void main (String[] args) throws IOException {
   FileInputStream fin =  new FileInputStream("D://pfe//cbedext0513.txt");
   BufferedReader in = new BufferedReader(new InputStreamReader(fin)); 
   PrintWriter out = new PrintWriter (new FileWriter ("D://test"));
   String line;
   while ((line = in.readLine()) != null){
 
       if (line.substring(0,8)== "EXSTRS01") 
        out.write(line);
        
             
   }
   in.close();

 }
}

11 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
8 avril 2014 à 15:47
C'est tout simple, il faut libérer l'accès au fichier avec un out.close();

public class maClass {

    public static void main (String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new FileReader("D://pfe//cbedext0513.txt")); 
        PrintWriter out = new PrintWriter (new FileWriter ("D://test.txt"));
        String line = in.readLine();
        while (line != null){
            if (line.startsWith("EXSTRS01")){ 
                out.println(line);
            }
            line = in.readLine();
        }
        in.close();
        out.close();
    }

}
2
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
Modifié par cs_Julien39 le 8/04/2014 à 11:21
Salut,

Le test réalisé dans le if sera toujours faux, le == compare les références des objets, dans ton cas, ces références seront toujours différentes : d'où le fichier vide.

Pour t'en sortir en comparant les valeurs :
if (line.substring(0,8).equals("EXSTRS01"))


Ensuite pour le problème du retour à la ligne, c'est normal, tu ne demandes pas d'ajouter un retour à la ligne lorsque tu ajoutes du texte dans ton fichier :
tu peux utiliser au choix :
out.println(line);

ou
out.write(line+"\n");


Je préfère la première méthode qui t'évite une concaténation.
1
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
8 avril 2014 à 13:35
Il faut enlever out.write(line); et le remplacer et non l'ajouter, je pense que c'est ce que tu as fait non ?
1
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
8 avril 2014 à 14:07
C'est pourtant ce qu'il faut faire :
public class maClass {

    public static void main (String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new FileReader("D://pfe//cbedext0513.txt")); 
        PrintWriter out = new PrintWriter (new FileWriter ("D://test.txt"));
        String line = in.readLine();
        while (line != null){
            if (line.startsWith("EXSTRS01")){ 
                out.println(line);
            }
            line = in.readLine();
        }
        in.close();
    }

}


J'ai modifié quelques autres choses pour que ce soit plus propre
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
8 avril 2014 à 15:43
Attend, je vais tester chez moi et je te dis.
1
Whismeril
Messages postés
17487
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
5 juillet 2022
600
8 avril 2014 à 11:12
Ajout des balises de coloration syntaxique.
Voir ici
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

8 avril 2014 à 12:19
Merci cs_Julien39 ca marche mais le programme ecrit dans le fichier cible chaque ligne 2 fois de suite
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

Modifié par cs_Julien39 le 8/04/2014 à 14:01
public class maClass {

  public static void main (String[] args) throws IOException {
  
   BufferedReader in = new BufferedReader(new FileReader("D://pfe//cbedext0513.txt")); 
   PrintWriter out = new PrintWriter (new FileWriter ("D://test.txt"));
   String line = new String();
  String c1;
   while ((line = in.readLine()) != null){
    c1 = line.substring(0,8) ;
    if (c1.equals("EXSTRS01")){ 
       out.write(line);
        out.println(line);}
             
   }
   in.close();

 }
}
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

8 avril 2014 à 13:46
si j'enleve out.write(line); et je la remplace par out.println(line) le fichier cible devient vide
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

8 avril 2014 à 14:32
Merci , mais le fichier cible est vide :(
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

Modifié par cabistos le 8/04/2014 à 16:06
ca marche :DD merciiiiiiiii enormement Julien
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
8 avril 2014 à 16:09
Dans ce cas, peux tu marquer le sujet comme résolu et cliquer sur le + associé à ma réponse stp ?
0
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Statut
Membre
Dernière intervention
1 juin 2014

8 avril 2014 à 16:42
bien sûr
0