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

Collection et Stream Java Discussion :

Récupération fichier texte


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut Récupération fichier texte
    Bonjour,

    j'ai un petit souci pour récupérer le contenu d'un fichier txt dans une matrice. mon fichier est composé de 3 colonnes : 1er Id , 2eme Id et une valeur (entier), ils sont séparés par un espace:
    par exp:

    903 52 120
    401 36 114
    .........
    ma matrice doit contenir tous les entiers et je dois tjr pouvoir retrouver les id.
    comment je pourrais-faire?

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Utilise un FileReader sur ton fichier pour en parcourir les lignes, et dissocie les valeurs de chaque ligne avec un StringTokenizer : il ne te reste plus qu'à insérer le tout dans ta matrice (en l'occurrence un tableau bidimensionnel "int[][]").
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  3. #3
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Ah ben faudrais que tu stockes ta matrice dans une Map avec comme clé l'id que tu as dans ton fichier. Sinon je vois pas trop comment tu pourrais faire!
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  4. #4
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut recuperation fichier/hashmap
    Citation Envoyé par maxf1
    Ah ben faudrais que tu stockes ta matrice dans une Map avec comme clé l'id que tu as dans ton fichier. Sinon je vois pas trop comment tu pourrais faire!
    Merci bcp pour ta réponse
    si j'ai bien compris le principe des Map, c'est que les données sont organisées sous forme de pairs, donc chaque valeur est associée à un Id.
    Dans mon cas, il se trouve que pour chaque valeur, je veux associer 2 Id: userId et itemId. je ne sais pas si c'est possible avec les hashmap.
    je reprends l'exp:

    userId ItemId score
    215 412 16
    ........
    --> pour le score 16, je veux associer 215 et 412
    t'aurais une idée?

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par g_rare
    Utilise un FileReader sur ton fichier pour en parcourir les lignes, et dissocie les valeurs de chaque ligne avec un StringTokenizer : il ne te reste plus qu'à insérer le tout dans ta matrice (en l'occurrence un tableau bidimensionnel "int[][]").
    Merci pour ta réponse
    Effectivement, c'est ce que j'avais commencé à faire, sauf que cette matrice doit contenir uniquement les scores (valeurs de 3ème colonne ds l'exp)

    Id_user Id_item score
    241 985 20
    ....
    et je dois stocker les Id relatifs à chaque score
    c'est à ce niveau où je bloque
    Help..

  6. #6
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Soit tu te fais une normalisation,

    Tu définis la clé userId#itemId par exemple:

    userId ItemId score
    215 412 16


    La clé pourrait etre 215#412 ou ce que tu veux entre les 2, met un caractere special pour que tu puisses redissocié les 2 lorsque t'en a besoin.

    Sinon il faudrait que tu fasse une Map de Map

    Soit dans la premiere map, le userId qui te renvoi une autre map, et avec cette map prendre l'itemid. Mais cette solution peut-etre un peu plus compliqué si tu veux partique du score pour arriver à l'id.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  7. #7
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Rien ne t'empêche de créer un objet pour les parties ID
    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
     
    public class Identificateurs
    {
        private String idUtilisateur = null;
        private String idItem = null;
    ...
        public String getIdUtilisateur()
        {
           return idUtilisateur;
        }
        public void setIdUtilisateur(String idUtilisateur)
        {
           this.idUtilisateur = idUtilisateur;
        }
    ...
    }
    Dans le traitement de ton fichier texte, tu instancies un objet Identificateurs (objetCle) et tu fais map.put( objetCle, valeur );
    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
     
    ...
    String line = null;
    Hashtable ht = new Hashtable();
     
    while ( (line = bufferedReader.readLine()) != null )
    {
       StringTokenizer tk = new StringTokenizer(line, " ");
       while ( tk.hasMoreElements() )
       {
         Identificateur id = new Identificateur();
         id.setIdUtilisateur( tk.nextToken() );
         id.setIdItem( tk.nextToken() );
         ht.put( id, new Integer(tk.nextToken()) );
       }
    }
    Quelque chose dans le genre...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut maps + objets Id
    Merci pour les conseils,
    je vais essayer de tester ça pour voir ce que ça donne.

    Merciiiiii

  10. #10
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut Bonjour à tous:)
    j'ai encore des soucis en récupération des fichiers texte en mémoire
    cette fois, mon fichier se présente comme ça:

    UserId|age|sexe|profession|CodePostal

    le fichier contient à la fois des string et des int.

    j'ai intégré ce code là, mais quand j'exécute j'obtient rien en output (même pas les résultats de la démo )
    qqu pourrait me dire c'est dû à quoi?
    Merciii

    *****

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.StringTokenizer;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.io.RandomAccessFile;
    import java.io.Reader;
    import java.util.Vector;

    public class DemogData {
    private String filePath;
    private String [][] data;

    public DemogData(String filePath) throws IOException {
    super();
    this.filePath = filePath;
    parseFile();
    }

    private void parseFile() throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(filePath));

    String line = null;
    List<String> items = new ArrayList<String>();
    StringTokenizer splitter;
    while ((line = reader.readLine()) != null) {
    items.add(line);
    }
    data = new String [items.size()][5];
    int counter = 0;
    for (String item : items) {
    splitter = new StringTokenizer(item, "|");
    int nv = splitter.countTokens() ;

    counter++;
    }


    }



    public String[] getuList(String occupation) {
    String[] uList = new String[0];
    for (String[] dataLine : data) {
    if (dataLine[3] == occupation) {
    String[] newList = new String[uList.length + 3];
    int counter = 0;
    for (String entry : uList) {
    newList[counter] = entry;
    counter++;
    }
    newList[counter] = dataLine[0];
    uList = newList;
    }
    }
    return uList;
    }

    public static void main(String[] args) {
    try {
    DemogData demo = new DemogData("C:/u.txt");
    String occupation = "student";
    System.out.print("utilisateurs ayant profession" + " " + occupation + ": ");
    for (String i : demo.getuList(occupation)){
    System.out.println(i + " ");
    }

    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    /* try {
    DataMatrixHandler demo = new DataMatrixHandler("C:/data tries2.txt");
    int userId = 1;
    System.out.print("items votés par l'utilisateur n°" + userId + ": ");
    for (int i : demo.getArticlesList(userId)) {
    System.out.println(i + " ");
    }*/


    }

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

Discussions similaires

  1. Récupération du texte d'un fichier
    Par Bibou06 dans le forum C++
    Réponses: 9
    Dernier message: 29/01/2008, 01h57
  2. récupération de données à partir d'un fichier texte
    Par ludol59 dans le forum Bibliothèque standard
    Réponses: 9
    Dernier message: 23/01/2008, 21h04
  3. récupération de données dans un fichier texte
    Par capucine1983 dans le forum Langage
    Réponses: 4
    Dernier message: 30/06/2007, 00h16
  4. récupération données (fichier texte)
    Par Elstak dans le forum C
    Réponses: 9
    Dernier message: 21/04/2007, 17h35
  5. [VBA-E] Récupération données fichier texte
    Par Theo28fr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/07/2006, 08h08

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