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

Résolu/Fermé
AHop Messages postés 22 Date d'inscription jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017 - Modifié le 19 mai 2017 à 13:03
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 21 mai 2017 à 00:10
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 mai 2017 à 18:07
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 jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017
19 mai 2017 à 18:14
comment je cette premiere ligne ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 mai 2017 à 18:26
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 jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017
19 mai 2017 à 21:47
Merci
0
AHop Messages postés 22 Date d'inscription jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017
20 mai 2017 à 12:27
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 mai 2017 à 12:48
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 jeudi 18 mai 2017 Statut Membre Dernière intervention 24 mai 2017
20 mai 2017 à 23:09
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 mai 2017 à 00:10
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