problème de découpage d'un fichier
Bonjour à tous,
Je met en pièce jointe la Classe que j'ai écrit. Le but est d'extraire certains champs d'un grand tableau sachant qu'un des champs doit se retrouver dans deux fichiers différents. Je ne comprends pas pourquoi le if imbriqué celui qui duplique le champ dans un autre fichier ne fonctionne que partiellement. Il manque des lignes dans le fichier destination.
J'ai beau chercher je ne voit pas où est mon erreur, un peu d'aide serait bienvenue.
Merci à vous,
Yal
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| // Classe de nettoyage on ne garde que les colonnes significatives, on crÈe aussi le fichiers des codes ISIN pour tÈlÈchargement des donnÈes intraday
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
public class ListeEuronext {
public ListeEuronext(){
String s = File.separator;
Date dateFormatee = new Date();
SimpleDateFormat formatDate = new SimpleDateFormat("yyMMdd");
String date = formatDate.format(dateFormatee);
FileReader lire = null;
BufferedReader tamponIn = null;
File euroListe = new File("d:"+s+"Bourse"+s+"Archives"+s+"InfoSocietes"+s+"ListeEuronext-"+date+".txt");//fichier de sortie des donnÈes sociÈtÈes
FileWriter ecrireEuroListe = null;
String fichierCodes = "d:"+s+"Bourse"+s+"Programmes"+s+"Temp"+s+"Codes.txt";// indique le chemin du fichier des codes ISIN
try{
FileWriter fw = new FileWriter(fichierCodes,true);
ecrireEuroListe = new FileWriter(euroListe);
lire = new FileReader("d:"+s+"Bourse"+s+"Programmes"+s+"Temp"+s+"ListeEuronextBrute.txt");
tamponIn = new BufferedReader(lire);
int nbLignes = 0;
while(true){
String ligne = tamponIn.readLine();
nbLignes += 1;
if(ligne == null) break;
if(nbLignes > 4){
int indexToken = 0;
StringTokenizer st = new StringTokenizer(ligne, ";");
StringBuffer newLigne = new StringBuffer();
while(st.hasMoreTokens()){
indexToken +=1;
if(indexToken > 12) break;
if(indexToken < 6 || indexToken == 12){
String champ = st.nextToken()+";";
champ = champ.replace(",","");
newLigne.append(champ);
// duplique le champ dans un autre fichier
if(indexToken == 2){
String code = champ.substring(0, 12);// supprime le ";" de la fin
fw.write(code+"\r\n");
}
}
else st.nextToken();
}
newLigne.deleteCharAt(newLigne.length()-1);
String sortie = newLigne.toString();
ecrireEuroListe.write(sortie+"\r\n");
}
}
}
catch(IOException exception){
exception.printStackTrace();
}
finally{
try{
ecrireEuroListe.flush();
tamponIn.close();
ecrireEuroListe.close();
File supFichierSource = new File("d:"+s+"Bourse"+s+"Programmes"+s+"Temp"+s+"ListeEuronextBrute.txt");
supFichierSource.delete();
}
catch(IOException exception1){
exception1.printStackTrace();
}
}
}
} |