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 :

Programme d'extraction de donnée d'un fichier texte


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Licence RGI
    Inscrit en
    Septembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Licence RGI

    Informations forums :
    Inscription : Septembre 2016
    Messages : 39
    Par défaut Programme d'extraction de donnée d'un fichier texte
    Bonjour tout le monde.

    Je viens demander de l'aide pour mon programme qui consiste à extraire certaines données d'un fichier .txt et d'en afficher le resultat.
    Ceci dit il est possible que je rencontre 2 types de fichiers .txt ( Un fichier qui est deja ligne par ligne ou un fichier en streaming c'est à dire en un seul pâté pour être clair).

    Mon programme doit donc dans un 1er temps lire le fichier, jusque la je n'ai pas de pb
    Ensuite mon programme devrait pouvoir compter le nombre de caractère de fin de ligne de mon fichier (pour les données présente dans mon fichier les fins de lignes sont représentée par des " ' ").
    Si le nombre de " ' " est supérieur à 1 c'est donc un fichier déjà en ligne par ligne.
    Si le nombre de " ' " est inférieur ou égal à 1 c'est donc un fichier streaming et je dois donc remplacer mes " ' " par des "/n" pour le remettre en ligne par ligne.

    Une fois le fichier dans le bon format je dois extraire certaines infos mais cette partie du programme est déjà opérationelle.

    Je vous demande de l'aide car je debute en java et a force de chercher et d'essayer de nouvelles choses vu à droite à gauche je me retrouve face a mon programme totalement pommé sans savoir exactement ou j'en suis et si je ne fais pas du grand n'importe quoi.
    Je vous demande donc d'être indulgent et si possible de ne pas être hyper technique dans vos explications de façon à ce que je comprenne , je rappelle que je suis debutant

    Pour résumer : J'arrive à lire mon fichier, j'arrive à extraire les infos QUE lorsque le fichier est deja en ligne par ligne
    Je n'arrive pas à compter mes " ' " marquant la fin de ligne dans mon fichier .txt ce qui ne me permet pas non plus de determiner quel type de fichier arrive en entrée.
    Mon programme ne rentre pas dans la boucle (de comptage des " ' ") mon compteur ne s'incrémente donc pas et le resultat des retour à la ligne est toujours égal à 0!

    Je precise qu'à cette heure mon programme est en desordre il y a des choses que je ne saisie pas car à force de prendre des bouts de programme un peu partout je suis PERDU!

    Merci d'avance pour le temps que vous m'accorderez messieurs et pardon au As du java pour vos yeux en voyant mon code ci-dessous

    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
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.StringTokenizer;
     
    public class ProgExtLIN {
     
                 private static String readLine() {
                                            // TODO Auto-generated method stub
                                            return null;
                               }
     
                 public static void main(String[] args) {
     
     
                 readFile("C:/monfichier.txt");    // Lecture fichier
                 int compt = 0;
                 String Line =null;
     
                 while((Line = readLine()) !=null){
                              StringTokenizer st= new StringTokenizer(Line);
     
                                        while(st.hasMoreTokens()){
                                                      System.out.println("incrémentation");
                                                         if(st.nextToken().equals("'")){
                                                                      compt++;
                                                         }
                                            }
            }System.out.println(compt+ " retour à la ligne dans ce fichier"); 
                                return;
                 }
     
     
        private static BufferedReader reader;
        public static void readFile(String pathToFile){
     
     try{ 
                              reader = new BufferedReader(new FileReader(new File(pathToFile)));
                              String ligne;
     
                              while((ligne = reader.readLine()) != null){
                                            if(ligne.startsWith("LIN+")){
                                                         System.out.println(ligne);
                                                }
                              } 
                 } catch (Exception ex){
                              System.err.println("Error. "+ex.getMessage());
             } System.out.println("Fin de l'extraction");
        }

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonjour,
    je pense que le plus simple serait d'utiliser un BufferedReader, et d'ajouter un compteur de ligne :

    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
    public static void main(String args[]) {
            BufferedReader reader = null;
            int nbLigne = 0;
     
            try {
                reader = new BufferedReader(new FileReader("tonFichier.txt"));
                String line = reader.readLine();
     
                while (line!=null) {
                    nbLigne ++;
                    System.out.println(line);
                    line = reader.readLine();
                }
     
            } catch (IOException ioe) {
                System.out.println(ioe.getMessage());
            } finally {
                try { if (reader!=null) reader.close(); } catch (Exception e) {}
            }
     
           if (nbLigne >1) {
                 // tu es dans un fichier ligne a ligne
          } else {
             // tu es en streaming  ou dans un fichier ligne a ligne qui ne contient qu'une seule ligne
         }
        }

  3. #3
    Membre averti
    Homme Profil pro
    Licence RGI
    Inscrit en
    Septembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Licence RGI

    Informations forums :
    Inscription : Septembre 2016
    Messages : 39
    Par défaut
    Déjà merci beaucoup pour la réactivité!

    Cela fonctionne parfaitement j'ai éssayé avec plusieurs fichiers tout va bien, me reste à remplacer les " ' " par des "\n" et le tour est joué. C'est une chose simple mais pour moi c'est compliqué je laisse donc le sujet ouvert au cas ou je rencontre d'autres soucis.

    Merci encore!

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Pour remplacer des caractères, tu peux utiliser la fonction replace.
    Mais il faut être sur que tes fichier ne contiennent pas d'apostrophe, car sinon une phrase banale du genre "l'éléphant est un animal" sera modifiée.

    Pour utiliser le fonction, tu peux donc pour chaque ligne lu, remplacer toutes les occurences d'un caractère par un autre :

    line = line.replace('\'', '\n');
    En java les caractères spéciaux doivent être échappés par des \

    Voila, bon courage à toi

  5. #5
    Membre averti
    Homme Profil pro
    Licence RGI
    Inscrit en
    Septembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Licence RGI

    Informations forums :
    Inscription : Septembre 2016
    Messages : 39
    Par défaut
    Effectivement je peux retrouver d'autres " ' " ne voulant pas indiquer une fin de ligne merci du conseil! Ceci dit dans mon fichier dans le cas ou " ' " n'indique pas une fin de ligne ce caractère est précédé d"un " ? " il faut donc que je test le caractère precedent " ' " pour verifier si le " ? " s'y trouve et si cela indique ou non une fin de ligne. Voila je vais galerer mais en tout cas j'avance c'est le principal ^^

    Merci encore!

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Dans cas, il faut récupérer les index des apostrophes, pour récupérer le caractères précédent.
    il vaut mieux faire une nouvelle fonction pour que le code soit lisible. Personnellement je ferait une fonction qui prend une ligne en paramètre.
    Mais je pense qu'il va falloir faire une lecture caractère par caractère.

    Ou sinon voir du coté des regex, mais c'est plus compliqué pour un débutant.
    Je te laisse chercher un petit coup, et si tu trouve pas, je te donnerai la solution

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

Discussions similaires

  1. Extraction des données d'un fichier text en vb net
    Par sihammaster dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/11/2009, 15h37
  2. Extraction de données d'un fichier texte
    Par boobz dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2008, 11h40
  3. Réponses: 4
    Dernier message: 05/02/2008, 11h08
  4. Extraction de données dans un fichier texte en VB6 !
    Par rockroa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/06/2006, 16h00
  5. Perl: Extraction de données d'un fichier texte ?
    Par fifto dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2006, 16h01

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