Bonjour,
L'écriture du programme qui permet de générer un graphe à partir d'un fichier csv fonctionne mais
le soucis c'est que suivant le filtrage effectue sur les fichiers d'un répertoire ça se gâte.
Je donne un mois et une année pour effectuer le filtrage.
classe qui contient le main.
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 import java.io.File; import java.io.FileFilter; public class Filter2 implements FileFilter{ private String mois; private String annee; private String extension; public Filter2(String mois, String annee){ this.mois = mois; this.annee = annee; } //Constructeur à partir de la description et de l'extension acceptée public Filter2(String extension){ if(extension ==null){ throw new NullPointerException("La description (ou extension) ne peut être null."); } this.extension = extension; } //Implémentation de FileFilter public boolean accept(File file){ if(file.isDirectory()) { return false; } String nomFichier = file.getName().toLowerCase(); //String regex = ".*(05).*"; //String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*"; String regex=".*"; return nomFichier.matches(regex) && nomFichier.endsWith(extension); } public File[] getFiles(){ File [] files = null; Filter2 csv = new Filter2(".csv",mois,annee); File rep = new File("D:\\Documents and Settings\\pascal\\Desktop"); files = rep.listFiles(csv); return files; } }
La classe MoisCSD est la classe qui permet de génerer un graphe à partir d'un fichier csv
Ce qui pose probleme est la méthode accept de Filter:
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 import java.io.File; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; public class TestCode extends ApplicationFrame{ private static final long serialVersionUID = 1L; public TestCode(){ super("Test"); } public static void main(String [] args){ Filter2 filter = new Filter2("05","07"); File [] files = filter.getFiles(); if(files.length == 0){ System.out.println("vide"); System.exit(0); } for(File f : files) System.out.println(f.getAbsolutePath()); String fileName = files[0].getAbsolutePath(); final MoisCSD mois = new MoisCSD("Mois CSD",fileName); mois.pack(); RefineryUtilities.centerFrameOnScreen(mois); mois.setVisible(true); mois.setDefaultCloseOperation(ApplicationFrame.EXIT_ON_CLOSE); } }
Lorsque la regex est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //Implémentation de FileFilter public boolean accept(File file){ if(file.isDirectory()) { return false; } String nomFichier = file.getName().toLowerCase(); //String regex = ".*(05).*"; //String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*"; String regex=".*"; return nomFichier.matches(regex) && nomFichier.endsWith(extension); }
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String regex=".*";
qui sont les 2 fichiers présent dans le bureau et le graphe qui est affiché contient les données du 1er.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_043007_171523_sgactdy.csv D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_053107_171524_sgactdy.csv
Lorsque j'utilise :
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*";
alors que le parsing devrait être ok(c'est un parsing de cette forme dont j'ai besoin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part vide
car il contient le mois et l'année qui sont données en parametre du constructeur.
Enfin lorsque j'utilise
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String regex = ".*(05).*";
Le fichier qui est affiché est le correct mais ça donne ensuite une exception. Exception qui
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_053107_171524_sgactdy.csv java.lang.NullPointerException at MoisCSD.createDataset(MoisCSD.java:107) at MoisCSD.createFrame1(MoisCSD.java:63) at MoisCSD.<init>(MoisCSD.java:42) at TestCode.main(TestCode.java:24)
n'apparait pas dans le premier cas.
J'aurai besoin d'aide pour savoir comment écrire la méthode accept.
Merci
Partager