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

Langage Java Discussion :

Vector - Récupérer contenu


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut Vector - Récupérer contenu
    Bonjour

    voila, je récupère les données d'un fichier .csv dans un Vector et je voudrais savoir comment récupérer par exemple la 2eme colonne du vecteur?

    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Bonjour jacko2,

    Tu as un Vector<String> contenant toutes les lignes de ton fichier ?

    Si c'est le cas, la notion de colonne n'existe pas dans ton Vector.

    Il vaudrait mieux alors que tu alimentes un Vector<String[]> ou String[] représente le tableau des colonnes de ton CSV, que tu as alimenté par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] s = ligne.split(";")
    Ensuite pour récupérer la nième colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Vector<String> getColonne(int index)
    {
        Vector<String> out = new Vector<String>();
        for (String[] ligne : this.monVector.values())
            out.add(ligne[index]);
        return out;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    j'ai essayer avec le SPLIT mais il n'est pas dispo

    voila la parite 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
     
       private void readFromLine(String tempLine) {
          if (tempLine == null) {
             return;
          }
          Vector currentLine = new Vector();
          Iterator iter = currentLine.listIterator();
          m_fileContent.add(currentLine);
          m_rowsCount++;
     
          if (tempLine.trim().length() == 0) {
             return;
          }
          int colCount = 0;
          int cursorBegin = 0;
          int cursorEnd = tempLine.indexOf(CELL_SEPARATOR);
          while (cursorBegin > -1) {
             if (cursorEnd == -1) {
                currentLine.add(tempLine.substring(cursorBegin));
                cursorBegin = cursorEnd;
             } else {
                currentLine.add(tempLine.substring(cursorBegin, cursorEnd));
                cursorBegin = cursorEnd + 1;
             }         
             cursorEnd = tempLine.indexOf(CELL_SEPARATOR, cursorBegin);
             colCount++;
             System.out.println(currentLine + "\n");
          }
          if (colCount > getColsCount()) {
             setColsCount(Math.max(getColsCount(), colCount));
          }
       }

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Je crois que j'avais mal capté ce que tu voulais faire.

    Si tu veux récupérer le 2ème élément de ton Vector, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s2 = monVector.get(1); // retourne le 2ème élément
    String s3 = monVector.get(2); // retourne le 3ème élément
    ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    j'obtiens une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
    	at java.util.Vector.get(Unknown Source)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (monVector.size() >= 2)
        String s2 = monVector.get(1); // retourne le 2ème élément
    else
       System.out.println("ZUT !!! mon Vector a moins de 2 éléments");

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    java.lang.ArrayIndexOutOfBoundsException: 1
    	traitements.CreationFichier.creationFichier(CreationFichier.java:41)
    	CategoriesProblemes.doGet(CategoriesProblemes.java:40)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    pour ces 2 lignes :
    traitements.CreationFichier.creationFichier(CreationFichier.java:41)
    CategoriesProblemes.doGet(CategoriesProblemes.java:40)

    ce n'est pas de là que vient l'erreur, car cela fonctionne avec un fichier plus petit

    je ne comprends pas, parce que mon fichier CSV fait 22 Mo et je n'ai pas cette erreur alors que mon fichier texte ne fait que 7,5 Mo et j'ai l'erreur

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Cela ne doit pas venir de la taille de ton fichier.

    Tu peux donner l'instruction dadns CreationFichier.java à la ligne 41 ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    voici ma ligne 41

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    writer.ecrireFichier(val +  "	" + tab2[0] +  "	" + tab2[1] 
    +  "	" + tab2[3] +  "	" + tab2[15] + "	" + tab2[16] + "\n");
    mais je doute que ca vienne de là

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Citation Envoyé par jacko2 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.lang.ArrayIndexOutOfBoundsException: 1
    	traitements.CreationFichier.creationFichier(CreationFichier.java:41)
    	...
    Java en tout cas te dit que cela vient de là.

    Affiche tab2.length dans la console avant d'appeler writer.ecrireFichier(...), ou passe en mode debug.

    Je paries qu'à un moment tab2.length == 0 !

    Tu as une ligne vide dans ton fichier ?

  11. #11
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Java en tout cas te dit que cela vient de là.

    Affiche tab2.length dans la console avant d'appeler writer.ecrireFichier(...), ou passe en mode debug.

    Je paries qu'à un moment tab2.length == 0 !

    Tu as une ligne vide dans ton fichier ?
    Pas forcement vide mais avec moins d'éléments que les autres ca devrait suffire pour provoquer l'erreur .

    Regarde la ligne du fichier qui fait planter et vérifie son format!

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    effectivement, après un test, j'ai remarqué qu'il y avait 3 records dont un champ était vide, j'ai donc supprimé ces 3 lignes et ce la fonctionne nikel

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Bonjour,

    j'ai suivi vos conseils pour moi lire un fichier .csv mais est-ce la meme procédure pour lire un fichier excel ?
    parce que j'ai essayé, ca fonctionne sauf que ca affiche des caractères illisibles. J'ai meme convertit le fichier XLS en fichier texte et j'ai le meme problème alors que quand on ouvre le fichier avec un éditeur, c'est tout à fait lisible

    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
     
    private void readFromFile(String reader) {
    		File nom = new File(reader);
    		BufferedReader buffReader;
    		try {
    			buffReader = new BufferedReader(new FileReader(nom));
     
    			if (buffReader != null) {
    				try {
    					String tempLine;
    					tempLine = buffReader.readLine();
    					tampon = new StringBuffer();
     
    					while (tempLine != null) {
    						currentLine = new Vector<String>();
     
    						currentLine.add(tempLine);
    						String texte = "" + currentLine;
    						//texte = texte.substring(1, (texte.length() - 1));
    						tampon.append("" + texte + "<br>");
    						System.out.println(tampon.toString() + "\n");
     
    						tempLine = buffReader.readLine();
    					}
    				} catch (IOException e) {
    					System.err.println("Erreur lecture fichier CSV: "
    							+ e.toString());
    				} finally {
    					try {
    						buffReader.close();
    					} catch (IOException e) {
    						System.err.println("Erreur fermeture fichier CSV: "
    								+ e.toString());
    					}
    				}
    			}
     
    		} catch (FileNotFoundException e1) {
    			e1.printStackTrace();
    		}
    		System.runFinalization();
    		System.gc();
    	}

  14. #14
    Invité de passage
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut aide SVP
    hello,
    j'ai un probleme dans mon vecteur,
    mon probleme si j'ai 80 personne, je dois ecrire 80 fois la methode de l'ajout
    addElement(objet);
    voilà mon code source:
    Stagiaire stg=new Stagiaire();
    Stagiaire stg1=new Stagiaire();
    Passrelle p=new Passrelle();

    Vector<Object> v=new Vector<Object>();

    stg.saisire();
    p.saisir();
    stg1.saisire();

    v.addElement("Lundi");
    v.addElement(stg);
    v.addElement(p);
    v.add(3,stg1);

    for(int i=0;i<v.size();i++)
    System.out.println("element N°"+i+":"+ (v.elementAt(i)));


  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut


    C'est quoi une passrelle ?

    Je ne vois pas bien ce que tu veux faire, si tu veux saisir 80 personnes bah tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i=0; i<80; i++)
    {
        Stagiaire stg = new Stagiaire();
        stg.saisire();
        v.addElement(stg);
    }
    Tu as plutôt 80 colonnes dans ton fichier de types différents, non ?

    Dans ce cas tu vas bien être obligé de dire quelque part :

    champ1 est de type String
    champ2 est de type Stagiaire
    champ3 est de type Number
    champ4 est de type Stagiaire
    ...
    * 80

    A quoi ressemble ton fichier ? Je pense que tu es sur une mauvaise piste...

    Supposons que tu ais un fichier de personnes avec la structure suivante :

    NOM | PRENOM | AGE

    Alors ce que je ferai c'est créer un objet Java Personne :

    Personne
    + nom
    + prenom
    + age

    et créer une nouvelle personne pour chaque ligne du fichier pour alimenter une : List<Personne>

    Ensuite si tu veux par exemple jouer sur les "colonnes" comme calculer l'âge moyen, tu boucles sur les personnes et le tour est joué.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. Récupérer contenu d'une page HTML
    Par ArHacKnIdE dans le forum Langage
    Réponses: 9
    Dernier message: 07/11/2006, 08h56
  3. Récupérer contenu d'un fichier texte
    Par matt8-5 dans le forum Langage
    Réponses: 5
    Dernier message: 02/11/2006, 17h58
  4. Vector : récupérer des valeurs
    Par bobic dans le forum Langage
    Réponses: 6
    Dernier message: 18/08/2006, 14h05
  5. [VBA-O]Récupérer contenu message
    Par Elstak dans le forum VBA Outlook
    Réponses: 14
    Dernier message: 17/08/2006, 09h34

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