IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Lecture / écriture d'un fichier plat - BufferedReader - logFile.write


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 80
    Points : 64
    Points
    64
    Par défaut Lecture / écriture d'un fichier plat - BufferedReader - logFile.write
    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 + ";";
        }
    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();
            }
        }
    }
    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...
    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..........

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Hello,

    Tu nous as pas montré r ni ajouterColonne(), donc on en est réduit à deviner...

    Mais a priori, la ligne LectureFlux.logFile.write(r + "\n"); qui écrit une ligne du CSV, devrait probablement apparaître après avoir récupéré les informations, plutôt qu'avant.
    C'est pas tellement une question de Java que simplement se rappeler qu'en programmation les choses se font dans l'ordre où elles sont demandées.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 80
    Points : 64
    Points
    64
    Par défaut
    Salut thelvin,

    Merci énormément pour ta réponse.
    Effectivement j'avais oublié deux éléments, à force d'être obsédé par une ou deux méthodes, on en fini par oublier la globalité.

    Je viens d'éditer mon message précédent...

    Mais de toute façon, je pense que tu a réussi à mettre le doigt sur le dysfonctionnement, maintenant ça me saute aux yeux

    Jusqu’à maintenant :

    boucle tant que la ligne n'est pas vide {
    -J'écris la ligne
    -Je stock les informations
    }

    Donc forcément en arrivant à la dernière ligne, j'écris la ligne précédente, je stock la dernière ligne et puis voila, plus rien "close"....
    Je compile demain matin et je viens te dire....

    En tout cas merci énormément pour ton aide GG !

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 80
    Points : 64
    Points
    64
    Par défaut
    Salut à tous !
    Merci énormément thelvin

    Ça fonctionne parfaitement, parfois on se focalise sur ce qu'on pense être la cause du problème sans prendre le temps de prendre du recul et de vérifier la fonctionnalité dans sa globalité.

    J'ai compilé et ça fonctionne parfaitement, Merci !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  2. lecture/écriture dans un fichier
    Par benkunz dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2007, 11h35
  3. Réponses: 47
    Dernier message: 28/01/2007, 19h39
  4. lecture écriture dans un fichier
    Par poukill dans le forum C++
    Réponses: 9
    Dernier message: 23/05/2006, 11h02
  5. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo