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 :

Ecrire dans un fichier contenu Hashtable


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ecrire dans un fichier contenu Hashtable
    Bonjour,

    Je suis actuellement entrain de travailler sur un projet d'informatique affective où je dois détecter les émotions corporelles de personne via l'interface kinect. Mon projet avance plutôt bien. Afin de récupérer les coordonnées des différentes articulations (qui sont au nombre de 22) de la personne entrain d'être filmée (kinect+OSCeleton), j'ai crée une classe Matrice. Afin de pouvoir identifier et récupérer les matrices pour chaque articulation, j'ai crée une Hashtable et lui ai donné les paramètres suivant:

    dic.put(tab2[i],tabMat.get(i)); où tab2 est le tableau des noms des articulations et tabMat.get(i) une liste de matrices.

    Jusque là, tout va bien! Mes matrices sont remplies comme il faut! Mon problème se situe au niveau de l'affichage ou l'écriture de cette hashtable.

    Très simplement, j'ai fait:

    for(int i=0;i<tab2.length;++i)
    {
    var = tab2[i];
    println(tab2[i]); // affichage sur la console
    println(dic.get(var));
    outputfile4.println(dic.get(var)); // affichage dans un fichier (processing)
    outputfile4.flush();
    }

    L'affichage console est parfait, j'obtiens mes matrices dans la bonne forme

    Main_droite:
    0 1 3 4
    9 1 1 0
    0 0 0 1
    0 0 0 0
    ...

    Dans mon fichier, j'obtiens le résultat sous la forme:
    Main_droite:
    0 1 3 4 9 1 1 0 0 0 0 1 0 0 0 0

    J'ai essayé d'utiliser les méthode writeObject(Hashtable):
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
    out.writeObject(dataHastable);
    out.close();

    -> ne marche pas

    Pareil avec ObjectOutputStream...

    Est-ce donc possible d'écrire cette hashtable dans un fichier dans le bon format (le même qu'affiché sous console!)

    Merci d'avance pour vos réponse,

    Rémy

  2. #2
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    donc visiblement un problème de retour à la ligne. Moi quand j'écris dans un fichier j'utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String newLine = System.getProperty("line.separator");
    ensuite je concatène ce newLine à la fin de mes print genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    outputfile4.println(dic.get(var)+newLine);
    et ça marche nickel. Dis moi si ça marche =)

    (du coup y'a moyen d'enlever le 'ln')

    Tchao
    F*ck it ! Do it !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Merci pour ta réponse! J'ai essayé avec ce que tu m'as conseillé et le résultat est toujours le même. Le problème c'est que le contenu de dic.get(var) est la matrice entière (16 valeurs), et il n'y a aucun moyen de lui dire à la quatrième valeur, tu vas à la ligne... non?

    Lui il saute une ligne entre deux matrices de 16 valeurs:
    0 1 3 4 9 1 1 0 0 0 0 1 0 0 0 0
    <- saut de ligne
    0 3 4 1 0 8 1 7 0 0 0 1 0 0 1 0

    Encore merci pour ton aide

  4. #4
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    C'est dans ton code que tu dois dire qu'au enième élément tu dois aller à la ligne. Lorsque tu écris dans le fichier une matrice, si tu dois retourner à la ligne tous les 4 éléments de la matrice, alors fait simplement un modulo 4 pour ajouter un retour à la ligne.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Et oui mais le problème c'est que j'ai une Hashtable... D'abord j'écris toutes mes matrices dans une hashtable et c'est seulement ensuite que je les copie dans un fichier.

    Lorsque je fais: outputfile4.println(dic.get(tab2[i])), à quel moment je peux placer un modulo 4? Ça ne sert à rien puisque il écrit directement l'objet (Matrice entière) associé à l'i-ème élément du tableau. Et je ne vois pas ce que je pourrais changer dans mon code avant ou dans ma classe Matrice parce que l'affichage sous console est correct (Matrice 4*4 et non pas 16 valeurs sur une même ligne).

    Merci pour vos réponses,

  6. #6
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    des fois j'ai des problèmes avec le flush(), essaie de le mettre après la boucle.
    F*ck it ! Do it !

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/08/2012, 19h13
  2. Réponses: 1
    Dernier message: 01/06/2009, 05h12
  3. Ecrire dans un fichier sans effacer son ancien contenu.
    Par Mysti¢ dans le forum Général Python
    Réponses: 4
    Dernier message: 03/11/2006, 14h18
  4. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11
  5. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01

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