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 :

Lire des données d'un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Par défaut Lire des données d'un fichier
    Bonjour,

    Voila je dois lire un fichier txt qui contient des données séparées par des séparateurs ";"
    Donnée1;Données2;Données3 ...
    une fois ces données lu, je dois les placer dans fichier xml dans les balises bien précise, seulement j'ai des problème pour récupérer les données, voici le debut de mon code :
    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
     
    import java.io.*;
    import org.jdom.*;
    import org.jdom.output.*;
     
    public class JDOM1
    {
       //Nous allons commencer notre arborescence en créant la racine XML
       //qui sera ici "ListOfOrderResponse".
       static Element racine = new Element("OrderResponseList");
     
       //On crée un nouveau Document JDOM basé sur la racine que l'on vient de créer
       static org.jdom.Document document = new Document(racine);
     
       public static void main(String[] args) throws IOException
       {
     
          String chemin = "C:\\ARC.txt";
          BufferedReader fichier_source = new BufferedReader(new FileReader(chemin));
          String chaine;
          int i = 1;
          String tab[]= new String[22];
     
          while((chaine = fichier_source.readLine())!= null)
          {
             if(i > 1)
             {
    			tab[i] = chaine.split(";").toString();
             }	
             i++;
          }
          fichier_source.close();
     
     
          //On crée un nouvel Element  et on l'ajoute
          //en tant qu'Element de racine
          Element LiOfOrRe = new Element("ListOfOrderResponse");
          ((Element) racine).addContent(LiOfOrRe);
          Element OrRe = new Element("OrderResponse");
          ((Element) LiOfOrRe).addContent(OrRe);
          Element OrReHe = new Element("OrderResponseHeader");
          ((Element) OrRe).addContent(OrReHe);
          Element OrReNu = new Element("OrderResponseNumber");
          ((Element) OrReHe).addContent(OrReNu);
          Element BuOrReNu = new Element("BuyerOrderResponseNumber");
          BuOrReNu.setText(tab[1]);
          OrReNu.addContent(BuOrReNu);
    ici, tab[1] est vide !

    Je ne suis pas spécialiste de Java, j'ai besoin de vos lumières

    Quel est mon problème y a t il erreur dans mon code ?
    comment puis-je verifier que mon fichier est bien lu ?

    Merci d'avance pour vos aides !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par siro1 Voir le message
    Quel est mon problème y a t il erreur dans mon code ?
    Il y en a beaucoup trop pour toutes les énumérer. Tu dois apprendre à faire des choses plus simples avant de faire ça.

    Première erreur : tu ne traites les lignes que si i est supérieur à 1. Or, si i est égal à 1, il n'est pas supérieur à 1. Donc tab[1] est forcément null.

    Citation Envoyé par siro1 Voir le message
    comment puis-je verifier que mon fichier est bien lu ?
    En dehors du if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(chaine);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Par défaut
    tu as raison, j'ai recupérer ce code sur le net et je l'ai meme pas vérifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
          String chemin = "C:\\ARC.txt";
          BufferedReader fichier_source = new BufferedReader(new FileReader(chemin));
          String chaine;
          String[] tab = new String[26];
     
          while((chaine = fichier_source.readLine())!= null)
          {
             for (int i=0;i<26;i++)
            {
    			tab = chaine.split(";");
             }	
          }
          fichier_source.close();
    et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String valeur = tab[0];
    Je récupère ma valeur !

    Merci encore

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je suis à peu près sûr que la boucle for ne sert à rien, et que la boucle while pourrait être remplacée par un seul simple readLine().

    Mais bon.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Je suis à peu près sûr que la boucle for ne sert à rien, et que la boucle while pourrait être remplacée par un seul simple readLine().

    Mais bon.
    En effet, ça marche aussi

    Merci pour tous

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Par défaut
    Par contre j'aurais une derniere question. Enfaite, j'utilise une méthode pour remplacer une chaine de caractère dans le fichier xml que je génère pour en créer un nouveau. Je dois donc effacer celui qui n'est pas bon. Pour se faire voici ce que je fais :
    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
     
    static void remplaceCORE(String from, String to)
    	{
    		try{
    			BufferedReader rd = new BufferedReader(new FileReader(from)); 
    	        BufferedWriter wr = new BufferedWriter(new FileWriter(to));
    			String ligne;
     
    			while ((ligne = rd.readLine()) != null) { 
    				ligne=ligne.replace("<OrderResponseList>", "<OrderResponseList xmlns=\"rrn:org.xcbl:schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd\" xmlns:core=\"rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
    				ligne=ligne.replace("core_", "core:");
    				wr.write(ligne);
    				wr.newLine();   
    			}
     
    			rd.close();
    			wr.close();
    			//Efface le fichier from
    			try{
    				File ftmp = new File(from);
    				ftmp.delete();
    			}catch (Exception ee){System.out.println(ee);}
     
    		}catch (IOException e) {
    			System.out.println(e);
    		}	
    	}
    Seulement ça ne marche pas. J'ai cherché et c'est bien ce qu'il faut faire pour effacer ce fichier temporaire. . . où est mon problème ?

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

Discussions similaires

  1. [Débutant] Lire des données dans un fichier mixte (texte ET chiffres)
    Par Krillz dans le forum MATLAB
    Réponses: 7
    Dernier message: 03/03/2011, 18h36
  2. Réponses: 6
    Dernier message: 02/12/2010, 22h04
  3. lire des données sur un fichier .mat
    Par Mrmeynis dans le forum MATLAB
    Réponses: 3
    Dernier message: 20/07/2009, 14h37
  4. [VBS]Lire des données dans un fichier .txt
    Par kacxial dans le forum VBScript
    Réponses: 4
    Dernier message: 28/02/2007, 13h44
  5. Comment lire des données d'un fichier XML à partir de java
    Par kamaldev dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 25/08/2006, 19h29

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