Bonjour,
J'aimerais lire en entrée plusieurs fichiers CSV, puis pour chaque ligne crée une HashMap (ou mieux si vous pensez à autre chose), avec en clé la première ligne et en valeur les données de chaque ligne.
Pour le moment j'ai ce code la mais il ne fonctionne pas très bien...
PS : j'ai des valeurs vide dans le CSV.
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 public class Ligne implements FilenameFilter{ public static void parseCSV(String filePath)throws IOException{ try{ FileReader fr = new FileReader(filePath); // passe par un buffer pour simplifier la lecture du fichier BufferedReader buf = new BufferedReader(fr); // déclaration d'une chaîne de caractères afin de stocker la chaîne courante à chaque tour dans la boucle. String ligneUne; String ligne; HashMap<String, String> map = new HashMap<String, String>(); //on lit la première ligne du fichier ligneUne = buf.readLine(); ligne = buf.readLine(); // tant qu'il y a des lignes à lire (ligne != null) String[] titre = ligneUne.split(";"); for (int j = 0 ; j < titre.length ; j++){ ligne = buf.readLine(); //while (ligne != null) { // On découpe (split) la ligne à l'aide du séparateur //les données sont stockées dans un tableau de //chaine de caractètes String[] tabChaine = ligne.split(";"); //on affiche les données en parcourant le tableau for (int i = 0 ; i < tabChaine.length ; i++){ //on lit la ligne suivante ligne = buf.readLine(); map.put(titre[i], tabChaine[i]); System.out.println("Clé : " + map.keySet() + " Valeur : " + map.values()); } //} } fr.close(); } catch (FileNotFoundException e){ System.out.println("Le fichier est introuvable !"); } catch (IOException e) { System.out.println( e ); } } public boolean accept(File file, String name) { return name.toLowerCase().endsWith(".csv"); } public static void main(String args[]) throws IOException { File root = new File("./input"); File[] files = root.listFiles(new CSVFilter()); for (File f : files) { String fileName = f.toString(); parseCSV(fileName); } }
Partager