Bonjour à tous,
Je viens de passer 3 jours à chercher une solution à mon souci, du coup je viens un peu vers vous en dernier recours.
Je reçois un fichier plat généré par un Batch.
Je cherche à le parser afin de récupérer juste les informations nécessaires et à les réécrire dans un CSV.
Tout fonctionne très bien sauf que la dernière ligne du fichier plat n'est jamais réécrite dans le fichier CSV......
Je vous jure, ça fait 2 gros jours que j'essaye d'automatiser ce traitement.....
Si vous avez la moindre idée de la raison pour laquelle la dernière ligne du fichier plat n'est pas récupérée ou réécrite, c'est avec un immense plaisir....
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 static String r = ""; static String nom; static String prenom; public Boolean lectureFichier(String fileName) throws IOException { String ligne; BufferedReader ficTexte = null; Boolean retour = false; try { LectureFlux.logFile.write( "NOM;PRENOM;NUM;RUE;CP;VILLE\n"); } catch (IOException e) { e.printStackTrace(); } try { ficTexte = new BufferedReader(new FileReader(new File(fileName))); while ((ligne = ficTexte.readLine()) != null) { recuperationEnregistrements(ligne); } ficTexte.close(); retour = true; } catch (FileNotFoundException e) { LectureFlux.logFile.write("Erreur sur le fichier : " + e); } catch (IOException e) { LectureFlux.logFile.write(errDossier + nom + " " + e); } finally { if (ficTexte != null) { ficTexte.close(); } } return retour; } public static void recuperationEnregistrements(String ligne) throws IOException { recuperationCIVILITE(ligne); recuperationADRESSE(ligne); } public static void recuperationCIVILITE(String s) throws IOException { if (s != null && s.contains("NOM")) { nom = s.substring(46, 59).trim(); prenom = s.substring(59, 113).trim(); } } public static void recuperationADRESSE(String s) throws IOException { if (s != null && s.contains("ADDRESSE")) { try { LectureFlux.logFile.write(r + "\n"); } catch (IOException e) { } r = ""; r += nom + ";"; r += prenom + ";"; r = r.trim(); r = ajouterColonne(s, 28, 3); r = ajouterColonne(s, 30, 10); r = ajouterColonne(s, 41, 8); r = ajouterColonne(s, 49, 1); } } private static String ajouterColonne(String s, int deb, int taille) { String c = s.substring(deb, deb + taille).trim(); return r + c + ";"; }Le développement Java n'étant pas spécialement ma spécialité, j'ai récupérer une partir de la solution sur le web...
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 public class LectureFlux { public static FileWriter logFile; public static FileWriter rapport; private LectureFlux(){ } public static void main(String[] args) throws IOException { try { JFileChooser dialogue = new JFileChooser(); dialogue.showOpenDialog(null); if (dialogue.getSelectedFile() != null) { System.out.println(dialogue.getSelectedFile().toString()); Date date = new Date(); String dateFormat = new SimpleDateFormat("yyyy-MM-dd").format(date); logFile = new FileWriter(dialogue.getCurrentDirectory() + "\\" + dateFormat + "_Fichier1_" + dialogue.getSelectedFile().getName().replace(".", "_") + ".csv", false); rapport = new FileWriter(dialogue.getCurrentDirectory() + "\\" + dateFormat + "_Fichier1_" + dialogue.getSelectedFile().getName().replace(".", "_") + ".log", false); FichiersAdd fichierAdd = new FichiersAdd(); fichierAdd.lectureFichier(dialogue.getSelectedFile().toString()); } } catch (IOException e) { e.printStackTrace(); } finally { logFile.close(); rapport.close(); } } }
Tout fonctionne très bien mais pourquoi il refuse de réécrire la dernière ligne du fichier plat (elle est correctement formatée, exactement comme toutes les autres...
exemple :
1 Ligne pour la civilité
1 Ligne pour l'adresse
2 Ligne pour la civilité
2 Ligne pour l'adresse
3 Ligne pour la civilité
3 Ligne pour l'adresse
4 Ligne pour la civilité
4 Ligne pour l'adresse
etc...
etc...
Merci énormément par avance pour votre aide..........
Partager