Menu

Création de'un fichier à partir d'un autre fichier [Résolu]

AHop 22 Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - 19 mai 2017 à 13:02 - Dernière réponse : KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention
- 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;
    }
   }
  }

 }

}




Afficher la suite 

8 réponses

Répondre au sujet
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 19 mai 2017 à 18:07
0
Utile
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.
Commenter la réponse de KX
AHop 22 Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - 19 mai 2017 à 18:14
0
Utile
1
comment je cette premiere ligne ?
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 19 mai 2017 à 18:26
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fichier_clt));
bufferedWriter.append("id,origin,destination,capacite,eo,Em,DTM,DTD");
Commenter la réponse de AHop
AHop 22 Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - 19 mai 2017 à 21:47
0
Utile
Merci
Commenter la réponse de AHop
AHop 22 Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - 20 mai 2017 à 12:27
0
Utile
1
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 ?
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 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");
Commenter la réponse de AHop
AHop 22 Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - 20 mai 2017 à 23:09
0
Utile
1
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


KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 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...
Commenter la réponse de AHop