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 :

Gestions des fichiers dat avec properties


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut Gestions des fichiers dat avec properties
    Bonjour,

    Dans le cadre d'une application, je stocke dans un fichier .dat, des noms de villes avec leur nombre d'habitants et dans un autre fichier, des prénoms avec pour valeur la ville dans laquelle ils résident.

    Sauf, que j'aimerais pouvoir supprimer dans le 1er fichier, la ville (et donc avec sa valeur, le nombre d'habitants) et que par la même occasion, cela supprime dans le 2ème fichier, chaque prénom ayant pour valeur la ville.

    Est-ce que cela est possible ?
    Auriez-vous des idées ?

    Merci d'avance pour votre aide

  2. #2
    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
    Vous devrez le faire à la main.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Merci de ta réponse.
    Mais existe t il une fonction qui permette de supprimer la(les) clé(s) associée(s) à la valeur passée en paramètre?

  4. #4
    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
    etant donné que java n'a pas la moindre idée de ce qu'est votre .dat, je ne vois pas en quoi vous espérez qu'il y aie déjà quelque chose de tout fait pour y supprimer des données

    A vous de maintenir votre structure de données comme un grand.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Merci pour votre aide.
    Mais j'utilise l'objet properties, donc je me demandais si cet objet permettait de supprimer toutes les clés qui ont pour valeur la chaine passée en paramètre

  6. #6
    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
    Properties implémente Map, alors pour enlever toutes les entrées d'une valeur donnée, on peut toujours le faire comme avec une Map :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    properties.values().removeAll(listeDeCeQueJeVeuxEnlever);
    Si tu veux n'en enlever qu'une à la fois c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    properties.values().removeAll(Collections.singletonList("chaîne à enlever"));
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    properties.values().removeAll(Arrays.asList("chaîne à enlever"));
    comme on veut.

    Du coup je ne vois pas bien ce que tes fichiers .dat venaient faire dans cette histoire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Merci pour ta réponse.
    Donc si par exemple je fais une arraylist contenant ma valeur à enlever, la méthode removeall va supprimer toutes les clés associées à cette valeur?

  8. #8
    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
    Oui.

    Note que je t'ai indiqué directement des manières de faire si tu ne veux enlever qu'une seule valeur. ArrayList est un peu lourd dans ce cas-là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Oui en effet, j'ai été voir du côté de la javadoc toutes ces fonctions un peu plus en détail. J'ai opté pour un Vector et tout marche nickel.

    Encore merci pour ton aide

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Finallement, je profite de ce topic pour poser une autre question:

    Est il possible d'associer plusieurs valeurs à une même clé?
    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
    			FileOutputStream writer = new FileOutputStream(new File("conf.yml"));
    			ArrayList<String> array = new ArrayList<String>();
    			array.add("yoann");
    			array.add("seba");
    			props.put("membres", array);
    			props.store(writer, "testing");
    			System.out.println("realise");
    		}catch(Exception e) {e.printStackTrace();}
    mais j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
    	at java.util.Properties.store0(Properties.java:812)
    	at java.util.Properties.store(Properties.java:796)
    	at mainyaml.main(mainyaml.java:43)
    D'autres idées?

    Merci d'avance

  11. #11
    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 xokami35x Voir le message
    Oui en effet, j'ai été voir du côté de la javadoc toutes ces fonctions un peu plus en détail. J'ai opté pour un Vector et tout marche nickel.
    À choisir entre ArrayList et Vector, il vaut mieux ArrayList, comme la lecture de la JavaDoc devrait le faire comprendre -_-°.

    Mais si tu ne veux supprimer qu'une seule valeur, à choisir entre ArrayList et mes exemples, il vaut mieux mes exemples. C'est plus facile à programmer, à lire et à exécuter.

    Citation Envoyé par xokami35x Voir le message
    Est il possible d'associer plusieurs valeurs à une même clé?
    Pas avec les Properties.
    Mais c'est possible avec par exemple un HashMap<String, List<String>>.

    En fait je recommande plutôt la bibliothèque Guava qui fournit HashMultimap, prévu pour faire ça facilement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ok merci de ta réponse.
    Le problème de la hashmap, c'est qu'on ne peut pas la sérialiser en clair pour que l'utilisateur modifie des données par exemple, enfin je ne crois pas.

  13. #13
    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 xokami35x Voir le message
    Le problème de la hashmap, c'est qu'on ne peut pas la sérialiser en clair pour que l'utilisateur modifie des données par exemple, enfin je ne crois pas.
    Il faut le programmer soi-même ou utiliser une bibliothèque qui sache le faire, si c'est ce que tu veux dire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Je profite de ce topic pour poser une autre question:
    Je suis donc parti sur de la serialisation, mais il me lève une EOFException et je ne vois pas trop pourquoi, voilà le bout de 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
    public boolean checkFaction(String nom) {
    		if(!faction_file.exists()) //si le fichier n'existe meme pas
    			return false;
    		else {
    			try {
    				in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(faction_file)));
    				faction = (HashMap)in.readObject();
    				if(faction.containsKey(nom)) {
    					in.close();
    					return true;
    				}
    				else {
    					in.close();
    					return false;
    				}
    			}catch (Exception e) {e.printStackTrace();}
    			return false;
    		}
    	}
    Si j'ai bien compris, cette exception est levée lorsqu'il arrive à la fin du fichier un truc comme ça, mais je ne vois pas comment l'empêcher.

    Merci d'avance

  15. #15
    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
    c'est que votre fichier est incomplet.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Est ce qu'un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((faction = (HashMap)in.readObject())!= null)
    Résoudrait le problème?

    Merci pour la réponse rapide

  17. #17
    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
    si vous avez une IOException dans readObject, il ne retournera jamais de valeur et ne fera jamais votre test.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ok, par contre c'est bien une EOFexception et non une IO

    Du coup, quel serait le test à faire?

  19. #19
    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
    Vous l'avez déjà votre test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }catch (Exception e) {e.printStackTrace();}
    De plus une EOFException est bien une IOException.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    A bah oui c'est vrai je vais essayer de me débrouiller avec ça alors

    Merci pour votre aide

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

Discussions similaires

  1. Gestion des fichiers XML avec GTK+
    Par djibril dans le forum Contribuez
    Réponses: 17
    Dernier message: 16/10/2017, 10h18
  2. Gestion des fichiers XML avec la XML toolbox
    Par duf42 dans le forum Contribuez
    Réponses: 2
    Dernier message: 24/02/2012, 09h00
  3. Gestion des fichiers uploadés avec wicket
    Par raiden06 dans le forum Wicket
    Réponses: 0
    Dernier message: 28/07/2011, 11h27
  4. gestion des fichiers et dossiers avec FTP
    Par ahmeds dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 12/10/2006, 13h09

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