Lire et ecrire dans un fichier java [Résolu]

Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
-
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();

 }
}
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
2
Merci
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();
    }

}

Merci cs_Julien39 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
1
Merci
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.
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
1
Merci
Il faut enlever out.write(line); et le remplacer et non l'ajouter, je pense que c'est ce que tu as fait non ?
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
1
Merci
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
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
1
Merci
Attend, je vais tester chez moi et je te dis.
Commenter la réponse de cs_Julien39
Messages postés
12372
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
0
Merci
Ajout des balises de coloration syntaxique.
Voir ici
Commenter la réponse de Whismeril
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
0
Merci
Merci cs_Julien39 ca marche mais le programme ecrit dans le fichier cible chaque ligne 2 fois de suite
Commenter la réponse de cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
0
Merci
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();

 }
}
Commenter la réponse de cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
0
Merci
si j'enleve out.write(line); et je la remplace par out.println(line) le fichier cible devient vide
Commenter la réponse de cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
0
Merci
Merci , mais le fichier cible est vide :(
Commenter la réponse de cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
0
Merci
ca marche :DD merciiiiiiiii enormement Julien
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
Dans ce cas, peux tu marquer le sujet comme résolu et cliquer sur le + associé à ma réponse stp ?
cabistos
Messages postés
20
Date d'inscription
dimanche 23 mars 2014
Dernière intervention
1 juin 2014
-
bien sûr
Commenter la réponse de cabistos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.