Création de'un fichier à partir d'un autre fichier

Résolu
AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour j'utilise ce code pour récupérer le contenu d'un fichier txt dans autre fichier avec des nouveaux attributs .
Le problème qu'il ne récupéré pas la première ligne du fichier

id,origin,destination,capacite,eo,Em,DTM,DTD









package calcul;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class A1 {
 static String Newligne = System.getProperty("line.separator");

 public static void main(String[] args) throws Exception  {
     Class.forName("org.relique.jdbc.csv.CsvDriver");


  String csvFile = "d:/fichier.txt";
  String csvFile1 = "C:\\csv\\csv.txt";

  List<LineFile> list;
  try {
   list = ListFromTXT(csvFile);

   TXTFromList(list, csvFile1);

   List<LineFile> list1 = ListFromTXT(csvFile1);

   for (int i = 0; i < list1.size(); i++) {

    LineFile lf = list1.get(i);
   
    
    System.out.println(lf.getAttribute5() + " + "
      + lf.getAttribute6() + " = " + lf.getAttribute9());
    
   

   }

  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public static void TXTFromList(List<LineFile> liste_files, String file_name)
   throws IOException {
  File fichier_clt = new File(file_name);

  BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
    fichier_clt, true));

  for (LineFile lfile : liste_files) {

   String cont = "";
   cont = cont + lfile.getAid() + ",";
   cont = cont + lfile.getAttribute2() + ",";

   cont = cont + lfile.getAttribute3() + ",";

   cont = cont + lfile.getAttribute4() + ",";

   cont = cont + lfile.getAttribute5() + ",";
   cont = cont + lfile.getAttribute6() + ",";
   cont = cont + lfile.getAttribute7() + ",";
   cont = cont + lfile.getAttribute8() + ",";
  


   cont = cont + lfile.getAttribute9();

   cont = cont + Newligne;
  

   bufferedWriter.write(cont);
  }
  bufferedWriter.close();

 }

 public static List<LineFile> ListFromTXT(String file_name)
   throws IOException {
  BufferedReader br = null;
  String line = "";
  ArrayList<LineFile> files = new ArrayList<LineFile>();

  try {

   br = new BufferedReader(new FileReader(file_name));
   int cpt = 0;
   while ((line = br.readLine()) != null) {
    if (cpt > 0) {
     String[] ls = line.split(",");

     LineFile lineFile = new LineFile();
     lineFile.setAttribute1(ls[0]);
     lineFile.setAttribute2(ls[1]);
     lineFile.setAttribute3(ls[2]);
     lineFile.setAttribute4(ls[3]);
     lineFile.setAttribute5(ls[4]);
     lineFile.setAttribute6(ls[5]);
     lineFile.setAttribute7(ls[6]);
     lineFile.setAttribute8(ls[7]);


     //
     DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH:mm");
     DateFormat df1 = new SimpleDateFormat("HH:mm");

     Calendar c1 = Calendar.getInstance();
     String date1 = lineFile.getAttribute5();
     try {
      c1.setTime(df.parse(date1));
     } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }

     Calendar c2 = Calendar.getInstance();
     String time = lineFile.getAttribute6();

     try {
      c2.setTime(df1.parse(time));
     } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     Calendar cTotal = (Calendar) c1.clone();

     cTotal.add(Calendar.HOUR_OF_DAY, c2.get(Calendar.HOUR_OF_DAY));
     cTotal.add(Calendar.MINUTE, c2.get(Calendar.MINUTE));

     String somme = df.format(cTotal.getTime());
     System.out.println(somme);
     

     lineFile.setAttribute9(somme );

     
    


     files.add(lineFile);
     
     

     
     
     
    }
    cpt++;

   }

   return files;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return null;
  } catch (IOException e) {
   e.printStackTrace();
   return null;
  } finally {
   if (br != null) {
    try {
     br.close();
    } catch (IOException e) {
     e.printStackTrace();
     return null;
    }
   }
  }

 }

}




A voir également:

5 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

id,origin,destination,capacite,eo,Em,DTM,DTD
est un entête qui ne respecte pas le format général attendu, en particulier il va provoquer une exception sur ce morceau de code :

      try {
      c1.setTime(df.parse(date1));
     } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }

Il faut que tu gère la première ligne à part et l'ajouter au début du fichier de sortie lors de sa création.
0
AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
comment je cette premiere ligne ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fichier_clt));
bufferedWriter.append("id,origin,destination,capacite,eo,Em,DTM,DTD");
0
AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
0
AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fichier_clt));
bufferedWriter.append("id,origin,destination,capacite,eo,Em,DTM,DTD");


apres cette ligne je veux retourner à la ligne comment je fais ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu peux faire un
append(Newligne);
mais le mieux aurait sûrement été de considérer un PrintWriter :

PrintWriter writer = new PrintWriter(fichier_clt);
writer.println("id,origin,destination,capacite,eo,Em,DTM,DTD");
0

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

Posez votre question
AHop Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
lorsque je mets
PrintWriter writer = new PrintWriter(fichier_clt);
writer.println("id,origin,destination,capacite,eo,Em,DTM,DTD");

il m'affiche pas le premier ligne qui contient
num,origin,destination,capacite,ei,Em,DTM,DTD


0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ce ne doit pas être un ajout mais un remplacement de ce qui existait déjà. Si après tu remets ton code avec le BufferedWriter ça va écraser le fichier créé avec le PrintWriter...
0