Decoupage fichier texte

Signaler
Messages postés
6
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
14 juin 2010
-
Messages postés
6
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
14 juin 2010
-
Bonjour,

J'ai un fichier texte tres lourd que je cherche à découper en plusieurs fichier selon le premier String de chaque ligne. J'arrive bien à lire le gros fichier et à crééer les différents nouveaux fichier mais ces fichiers créé ne contiennent que la dernière ligne lue et correspondant au fichier, je n'arrive pas à ecrire les lignes les une apres les autres.
Voici mon code ci vous trouvez l'erreur, merci beaucoup de votre aide :

public class fragmentation
{
public static void main(String[] args) throws IOException
{
String numPoste,numPoste_prec="",ligneLue, ligne;
PrintWriter sortie = null;
int n=0;
FileWriter fic = null;
BufferedReader entree = new BufferedReader(new FileReader("espaq.txt"));
ligneLue = entree.readLine();
do
{
ligneLue = entree.readLine();
StringTokenizer tok = new StringTokenizer(ligneLue,";");
numPoste = tok.nextToken();
if (n==0)
{
fic = new FileWriter(numPoste+".txt");
sortie = new PrintWriter(fic);
sortie.println(ligneLue);
}

if(numPoste==numPoste_prec)
{
sortie.println(ligneLue);
}
if(numPoste!=numPoste_prec && n!=0)
{
sortie.close();
fic = new FileWriter(numPoste+".txt");
sortie = new PrintWriter(fic);
sortie.println(ligneLue);
}
n++;
numPoste_prec=numPoste;
}while (ligneLue!=null);
entree.close();
}
}

5 réponses


Salut,

Si tu veux applique les modifications apportées repèrées comme ceci:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< à supprimer ou ajouter selon le cas

testes et dis moi si c'est mieux

   import java.io.*;
   import java.util.StringTokenizer;

    
    public class FragmentationFic 
   {
      private static InputStream is = null; //<<<<<<<<<<<<<<<<<<<<<<
      private static InputStreamReader isr = null; //<<<<<<<<<<<<<<
      private static BufferedReader br = null; //<<<<<<<<<<<<<<<<<<<<
      
       public static void main(String[] args) throws IOException 
      { 
         String numPoste,numPoste_prec="",ligneLue, ligne; 
        PrintWriter sortie = null; 
         int n=0; 
         FileWriter fic = null; 
 //BufferedReader entree = new BufferedReader(new FileReader("espaq.txt")); <<<<<<<<<<<
         is = new FileInputStream("espaq.txt"); //<<<<<<<<<<<<<<
         isr = new InputStreamReader(is); //<<<<<<<<<<<<<<<
         br = new BufferedReader(isr); //<<<<<<<<<<<<<<<
         //ligneLue = entree.readLine(); //<<<<<<<<<<<<<<<
         //do  <<<<<<<<<<<<<<<<<<<<<<<<<<
         while( (ligneLue = br.readLine())!= null ) //<<<<<<<<<<<<<<
         { 
            //ligneLue = entree.readLine(); //<<<<<<<<<<<<<<<<
            StringTokenizer tok = new StringTokenizer(ligneLue,";"); 
            numPoste = tok.nextToken(); 
            if (n==0) 
            { 
               fic = new FileWriter(numPoste+".txt"); 
               sortie = new PrintWriter(fic); 
               sortie.println(ligneLue); 
            } 
         
            if(numPoste==numPoste_prec) 
            { 
               sortie.println(ligneLue); 
            } 
            if(numPoste!=numPoste_prec && n!=0) 
            { 
               //sortie.close(); <<<<<<<<<<<<<<<<<<<<
               fic = new FileWriter(numPoste+".txt"); 
               sortie = new PrintWriter(fic); 
               sortie.println(ligneLue); 
               sortie.close(); //<<<<<<<<<<<<<<<<
            } 
            n++; 
            numPoste_prec=numPoste; 
         }//while (ligneLue!=null); <<<<<<<<<<<<<<<<<<<<<<
         br.close(); 
      } 
   }


Cordialement,


...\ Dan /...
Messages postés
6
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
14 juin 2010

Merci, je viens de le tester mais c'est toujours pareil. Mon probleme est que lors de la recopie les fichiers ne contiennent à la fin que la dernière ligne copié comme si le programme effacé la ligne ecrite precedemment.

Re,
if(numPoste==numPoste_prec) 
            { 
               sortie.println(ligneLue); 
            } 
            if(numPoste != numPoste_prec && n!=0) 
            {

//À remplacer par:

if(numPoste.equals(numPoste_prec) )
            { 
               sortie.println(ligneLue); 
            } 
            if(!numPoste.equals(numPoste_prec) && n!=0) 
            {


Mon problème c'est que je ne peux pas tester ne connaîssant pas le structue de ton .txt...

...\ Dan /...

Re re,

J'ajoute que je test quand même la syntaxe en compilant, mais sans éxécuter.
À ce propos, si j'ai changé le nom Fragmentation en FragmentationFic, c'est que j'ai déjà un Fragmentatio.java

...\ Dan /...
Messages postés
6
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
14 juin 2010

Super merci ça marche