Bonjour à tous
Dans le cadre d'une application je dois effectuer des tests sur un fichier csv ayant pour séparateur ";"
Je créer donc un FILE :
et les outils associés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 File fileTraitement = new File(path);
ensuite je boucle dans une while tant qu'il reste des lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FileReader fr = new FileReader(fileTraitement); BufferedReader br = new BufferedReader(fr);
Puis je créer un StringTokenizer de cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while ((ligne = br.readLine()) != null) { }
Dans la boucle dans un premier temps je procédais ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 st = new StringTokenizer(ligne);
Puis j'ai vu qu'il y avait des optimisations possibles avec StringBuilder :
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 st = new StringTokenizer(ligne); String sampleT = st.nextToken(";"); String locusT = st.nextToken(";"); String runT = st.nextToken(";"); String dyeT = st.nextToken(";"); String alleleT1 = st.nextToken(";"); String peakT1 = st.nextToken(";"); String qualT1 = st.nextToken(";"); String volumeT1 = st.nextToken(";"); String alleleT2 = st.nextToken(";"); String peakT2 = st.nextToken(";"); String qualT2 = st.nextToken(";"); String volumeT2 = st.nextToken(";"); String commentT = st.nextToken(";");
Donc en dehors de ma boucle je créer mes StringBuilder :
Et dans la boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 StringBuilder sampleT = new StringBuilder(); StringBuilder locusT = new StringBuilder(); StringBuilder runT = new StringBuilder(); StringBuilder dyeT = new StringBuilder(); StringBuilder alleleT1 = new StringBuilder(); StringBuilder peakT1 = new StringBuilder(); StringBuilder qualT1 = new StringBuilder(); StringBuilder volumeT1 = new StringBuilder(); StringBuilder alleleT2 = new StringBuilder(); StringBuilder peakT2 = new StringBuilder(); StringBuilder qualT2 = new StringBuilder(); StringBuilder volumeT2 = new StringBuilder(); StringBuilder commentT = new StringBuilder();
Je vide et je rempli à chaque fois les champs et ce pour un fichier qui peut contenir 100000 lignes
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 sampleT.insert(0, st.nextToken(";")); locusT.insert(0, st.nextToken(";")); runT.insert(0, st.nextToken(";")); dyeT.insert(0, st.nextToken(";")); alleleT1.insert(0, st.nextToken(";")); peakT1.insert(0, st.nextToken(";")); qualT1.insert(0, st.nextToken(";")); volumeT1.insert(0, st.nextToken(";")); alleleT2.insert(0, st.nextToken(";")); peakT2.insert(0, st.nextToken(";")); qualT2.insert(0, st.nextToken(";")); volumeT2.insert(0, st.nextToken(";")); commentT.insert(0, st.nextToken(";"));
Pensez vous que c'est une méthode correct maintenant en utilisant les StringBuilder ou c'est encore la catastrophe et si c'est le cas quels outils devrais-je utiliser
J'espère avoir des réponses
Merci
Ben
Partager