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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();
			}
		}
	}
}