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

avec Java Discussion :

Extraire des données d'un ficher


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Extraire des données d'un ficher
    Bonjour,
    Je suis débutante dans le programmation en java et je cherche à savoir comment extraire des données d'un fichier texte pour les mettre ensuite dans une base de données.J'ai cherché dans les forums mais j'arrive pas à trouvé ce que je cherche.Mon but c'est d'extraire des lignes puis les mettre dans un tableau.SVP j'ai besoin de votre aide et je serais vraiment très reconnaissante.Ci joint vous trouveriez les elements a extraire et une partie du contenu de mon fichier texte qui a cette structure et ki se repete plusieurs fois dans le fichier.Merciiiiii


    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
    FBL/3
    1/AT6900/18JUL/LHR
    BRU
    147-8794308  5LHRCMN/T2K628MC3.28/CONSOLIDATION A/HEA
    DIM/K0/CMT120-100-130/1
    /K0/CMT120-100-143/1
    /AIR MENZIES INTER
    SSR/PLEASE NOTIFY  CNEE  ON   ARRIVAL. CODE AS PER MANIFEST. DZD.
    /SECURE CARGO
    147-87546432MANCMN/T7K201DG04/CONSOL
    /AIRLINE CARGO MAN
    OSI/JAGUAR
    LAST
    **************************************************************
    FBL/3
    1/AT716/18JUL/CMN/CNRNL
    NTE
    147-26699223FEZNTE/T2K38MC0.13/GATEAUX ET PERS
    DIM/K0/CMT50-38-36/1
    /K0/CMT56-31-33/1
    /RAM FEZ/AT441/17JUL/FEZ/1
    SSR/02 COLIS
    /TEL 0033673080206
    LAST
    **************************************************************
    FBL/3
    1/AT750/18JUL/CMN/CNRNW
    ORY/NIL
    LAST
    **************************************************************
    FBL/3
    1/AT960/18JUL/CMN/CNROC
    BCN
    147-42834702RAKBCN/T4K108MC0.64/ARTICLES EN CUI
    DIM/K0/CMT78-60-36/3
    /K0/CMT78-60-28/1
    /WORLD SOFT/AT402/18JUL/RAK/2
    OSI/REF     ZINEB.WORLDSOFT GMAIL.COM
    147-42892323CMNBCN/T1K3MC0.01/SEMI CONDUCTEUR
    DIM/K0/CMT36-36-11/1
    /EASIMAR
    SSR/NOTIFY    LEAR SPAIN
    147-20067003CMNBCN/T1K69MC0.18/DIPLOMATIC
    /MINISTERE DES AFF/1
    LAST

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Il n'y a pas de méthode toute faites pour traiter ce genre de cas. Tu vas devoir créer un Parser assez élaboré pour pouvoir extraire ces données.
    Je peux te donner quelques pistes pour démarrer mais le reste est entre te mains

    Tu dois réfléchir à la manière dont tu vas pouvoir récupérer tes blocs de données pour pouvoir ensuite les traiter.

    Tu as :
    . Une en-tête
    . Un corps constitué de plusieurs blocs

    Donc déjà ça te fait deux tâches distinctes à traiter.

    Prenons l'en-tête. Elle a la forme suivante
    X/XXXXX/XXXXX/XXX

    Tu peux donc découper ta chaines en plusieurs en utilisant le caractère '/' comme séparateur. Maintenant il semble que tu veux récupérer les chiffres contenus dans les séquences du milieux et la dernière séquence en entière.

    Pour le corps j'avoue ne pas bien comprendre ce que tu dois récupérer. Je remarque qu'il y a des blocs commençant à chaque fois par un mot de 3 lettres et que les les lignes intéressantes commences toutes par le nombre 127 (un hasard ?), peut être que tu peux exploiter ça pour découper ton fichier.

    Dans tous les cas il te faut trouver un moyen de découper des blocs.

    Une fois que c'est fait, pour chaque blocs tu appliques un traitement pour récupérer les infos dont tu as besoin.

    Voila c'est un début de piste, j'espère que ça pourra t'être utile.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Extraire des données d'un ficher
    Merci bcp Nico pour votre aide voici le programme que j'ai pu realiser et qui lis justement le fichier , je veux extraire des données comme indiqués dans l image en haut veuillez me donner un coup de main et merci bcp



    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
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
     
    public class ReadTextFile
    {
    	public static void main (String[] args) throws IOException
     
    		{
     
    			BufferedReader in = new BufferedReader(new FileReader("C:/Users/hp/Desktop/FBL.txt"));
    			String line;
    			while ((line = in.readLine()) != null)
    			{
     
    				{ 
    					String[] result = line.split("/");
     
    				     for (int x=0; x<result.length; x++)
     
    				    System.out.println(result[x]);
     
     
    				} 
    		}
    			in.close();
     
            }
    }

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par abdellahB Voir le message
    je veux extraire des données comme indiqués dans l image en haut
    Et qu'as-tu essayé pour faire cela ?
    Tu donnes un programme en exemple, est-ce qu'il suffit ? Sinon, que lui manque-t-il ? Et qu'as-tu essayé de faire pour combler ce manque ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    bonjour tt le monde je viens de finir un code mais le probleme reste tjr comment faire pour avoir la somme des chiffres comme montré dans l image donnez moi un coup de main voilà le code que j'ai pu faire et merci d'avance

    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
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class extraction
    {
    	public static void main (String[] args) throws IOException
    		{
     
    		 System.out.println("UWS");
     
    			BufferedReader in = new BufferedReader(new FileReader("C:/Users/hp/Desktop/stage/FBL2.txt"));
    			String line;
    			String tab[] = null;
    			int j=0;
    			int k=0;
    			String t=null;
    			while ((line = in.readLine()) != null)			
     
    			  {
     
    				String[] result = line.split("/");
    				for (int i=0; i<result.length; i++){
    					if(j==1 && (i==1)){
    						 System.out.print(result[i]+"/");
    						t=result[i];
    						 k++;
     
    						  }
    					else if(j==1 && (i==2)){
    						Pattern p = Pattern.compile("\\d");
    						Matcher m = p.matcher(result[i]);
    						while(m.find())
    							System.out.print(m.group());
    						 System.out.println("."+result[i+1]+".FINAL");
    						t=result[i];
    						 k++;
     
    						  }		
     
     
    				else if(j==2){
    					System.out.print(result[i]+"/");
    					j++;
     
    				}
    				else if(line.startsWith("147")&&i==1){
    					int somme=0;
    					String Str = new String(t);				      
    				      int indexK=Str.indexOf("K");
    				      int indexDG=Str.indexOf("DG");
    				      int n1= Integer.parseInt(Str.substring(indexK+1, indexDG));
    				      System.out.println(Str.substring(indexK+1, indexK+2) );
     
     
    								}
    				}
    				 j++;      
     
    			} 
    			in.close();
     
            }
    }

  6. #6
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Bon premièrement. Les boucles de boucles de boucles de boucles.. C'est le mal.
    C'est totalement illisible. D'autant plus que tu utilises des noms de variable tel que tab,j,k,t ce qui pour nous ne veux rien dire du tout.

    Je te (re)conseille de découper ton programme. Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String[] result = line.split("/");
    for (int i=0; i<result.length; i++){
        if(j==1 && (i==1)){
        System.out.print(result[i]+"/");
        t=result[i];
        k++;
    }
    Ce code récupère l'en tête et, ne fais rien avec ???
    Tu écrases la valeur de t sans jamais faire de traitement dessus donc tu ne risques pas de récupérer quoi que ce soit.

    Ensuite pourquoi ne pas faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] result = line.split("/");
    traitementEnTete(result);
    }
     
    // avec
    private void traitementEnTete(String[] entete){
    // tu fais ton traitement dessus
    }
    Ce qui te permettra d'avoir un code beaucoup plus lisible pour nous et pour toi aussi (car je suis sur que même toi tu te perds dans ton code).

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour tt le monde SVP est ce qu'on peux faire ?? si non comment on peux faire pour avoir la ligne qui suit la ligne courante et merci d'avance pour vos conseils

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netLine = in.readLine()
    tout simplement.....

Discussions similaires

  1. [Système] Extraire des données d'une page web
    Par nazoreen dans le forum Langage
    Réponses: 17
    Dernier message: 22/03/2006, 21h38
  2. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  3. Réponses: 7
    Dernier message: 29/09/2005, 10h19
  4. Réponses: 1
    Dernier message: 28/09/2005, 15h35
  5. extraire des données d'un code HTML
    Par blueice dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2004, 19h41

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