Signaler

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

Posez votre question AHop 22Messages postés jeudi 18 mai 2017Date d'inscription 24 mai 2017 Dernière intervention - Dernière réponse le 21 mai 2017 à 00:10 par KX
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;
    }
   }
  }

 }

}




Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
comment je cette premiere ligne ?
KX 14795Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 septembre 2017 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");
Répondre
Donnez votre avis
Utile
+0
plus moins
Merci
Donnez votre avis
Utile
+0
plus moins
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 14795Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 septembre 2017 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");
Répondre
Donnez votre avis
Utile
+0
plus moins
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 14795Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 23 septembre 2017 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...
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !