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

cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - 8 avril 2014 à 11:06 - Dernière réponse : cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention
- 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();

 }
}
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 8 avril 2014 à 15:47
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - Modifié par cs_Julien39 le 8/04/2014 à 11:21
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 8 avril 2014 à 13:35
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 8 avril 2014 à 14:07
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 8 avril 2014 à 15:43
1
Merci
Attend, je vais tester chez moi et je te dis.
Commenter la réponse de cs_Julien39
Whismeril 12048 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 29 septembre 2018 Dernière intervention - 8 avril 2014 à 11:12
0
Merci
Ajout des balises de coloration syntaxique.
Voir ici
Commenter la réponse de Whismeril
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - 8 avril 2014 à 12:19
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
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - Modifié par cs_Julien39 le 8/04/2014 à 14:01
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
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - 8 avril 2014 à 13:46
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
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - 8 avril 2014 à 14:32
0
Merci
Merci , mais le fichier cible est vide :(
Commenter la réponse de cabistos
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - Modifié par cabistos le 8/04/2014 à 16:06
0
Merci
ca marche :DD merciiiiiiiii enormement Julien
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 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 ?
cabistos 20 Messages postés dimanche 23 mars 2014Date d'inscription 1 juin 2014 Dernière intervention - 8 avril 2014 à 16:42
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.