Decoupage fichier texte

goulvena29 Messages postés 6 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 14 juin 2010 - 11 févr. 2010 à 10:51
goulvena29 Messages postés 6 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 14 juin 2010 - 11 févr. 2010 à 14:43
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

Utilisateur anonyme
11 févr. 2010 à 12:36
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 /...
0
goulvena29 Messages postés 6 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 14 juin 2010
11 févr. 2010 à 13:04
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.
0
Utilisateur anonyme
11 févr. 2010 à 14:02
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 /...
0
Utilisateur anonyme
11 févr. 2010 à 14:13
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 /...
0

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

Posez votre question
goulvena29 Messages postés 6 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 14 juin 2010
11 févr. 2010 à 14:43
Super merci ça marche
0