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 :

Stockage de beaucoup de données par section et clef en un seul fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut Stockage de beaucoup de données par section et clef en un seul fichier
    Bonjour,
    Je viens vous posé une question à propos des stockages de nombreuses données sous un seul fichier.
    Afin d'illustrée mon idée, à programmer plus tard, je me doit de charger des points qui seront situer au dessus d'une image dite "MAP". Chaque point a alors un nom de point, une coordonnée en x (vertical) et y (horisontale), un nom effectif, un descriptif (qui peut être long d'au moins 100 lignes avec retours de lignes).
    Comme je compte repéré par un nom chaque point, j'aurais pu, à l'image d'un fichier .ini faire ceci:
    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
     
    [Point1]
    NomEffectif=Le magasin de toto
    PointX=21
    PointY=12
    Descriptif=Le magasin de toto vend des armes à tout voyageurs.\n Epée de jade : 20 Pièces d'or \n Epée de fer : 5 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
     
    [Point2]
    NomEffectif=Le magasin de titi
    PointX=11
    PointY=32
    Descriptif=Le magasin de titi vend des sacs sans fond à tout voyageurs.\n Sac sans fond bleu : 50 Pièces d'or \n Sac de lin de fer : 6 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
     
    [Point3]
    NomEffectif=Le magasin de victor
    PointX=15
    PointY=33
    Descriptif=Le magasin de victor vend des viandes à tout voyageurs.\n Viandes sèches. Restaure 50 Points de vies : 11 Pièces d'or \n Bonbon de luxe. Restaure 50 Points de vies et 50 Points de mana : 100 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
    Comme on peut le voir j'ai beaucoup de données à traiter. Mon souci principal est de savoir si le fichier .ini correspondrais à ce genre de système et si il peut prendre plus de 100 lignes longues avec des sauts de lignes.

    En plus de cela, comment implémenté un tel fichier si un jour je me retrouve à supprimer, pour l'exemple, la section 2?
    Le programme sera t il en mesure de ne pas s'arrêter en cherchant une suite logique de section ?
    Enfin pour terminer, je m'interroge sur la portabilité entre programme car ce fichier est destiné à être téléchargé pour être lue dans un autre programme client.

    Le cas échéant quel autre méthode, implémentation je peux recourir pour effectuer cette tâche sans que cela ne rame trop, ni que ça nuise à la stabilité de mes programmes futurs.

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    En Java on fait souvent recours aux fichiers properties avec la classe Properties associée.
    Tu pourrais simuler la struicture du ini de la manière suivante:
    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
     
    Point1.NomEffectif=Le magasin de toto
    Point1.PointX=21
    Point1.PointY=12
    Point1.Descriptif=Le magasin de toto vend des armes à tout voyageurs.\n Epée de jade : 20 Pièces d'or \n Epée de fer : 5 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
     
    Point2.NomEffectif=Le magasin de titi
    Point2.PointX=11
    Point2.PointY=32
    Point2.Descriptif=Le magasin de titi vend des sacs sans fond à tout voyageurs.\n Sac sans fond bleu : 50 Pièces d'or \n Sac de lin de fer : 6 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
     
    Point3.NomEffectif=Le magasin de victor
    Point3.PointX=15
    Point3.PointY=33
    Point3.Descriptif=Le magasin de victor vend des viandes à tout voyageurs.\n Viandes sèches. Restaure 50 Points de vies : 11 Pièces d'or \n Bonbon de luxe. Restaure 50 Points de vies et 50 Points de mana : 100 Pièces d'or \n ..... on implémente une suite... jusqu'à 100 lignes.
    A plus

  3. #3
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Je te remercie pour la réponse George 7 mais n'étant pas un foudre de guerre dans la langue de Shakespeare, j'ai du mal à saisir comment Propreties fonctionne. De plus, je ne voie pas comment cela va se comporté si je retire la section Point2.
    Le programme plantera-t-il ou sera-t-il en mesure de continuer?

    Cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu supprimes les lignes avec "Point2" au début, ils ne seront pas chargés dans ta Map. Après savoir si ça plantera ou pas, ça c'est dans ton programme que tu le gères, je n'ai aucune idée de ce que tu fais de ces données et si tu testes en dur ce qui existe ou pas. Bref, je peux pas te dire.
    Utiliser Properties est plus que simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // va contenir les valeurs
    Properties prop = new Properties();
    // le fichier à charger
    InputStream in = new FileInputStream("/chemin/vers/mon/fichier.properties");
    // on charge le fichier
    prop.load(in);
    // accès à une valeur
    prop.getProperty("Point2.PointX");
    Bon là je ne gère pas les flux dasn cet exemple, à toi de le faire proprement.
    Tu peux ensuite ajouter des valeurs avec setProperty, et enregistrer avec store.
    Pour l'Anglais, il va falloir t'y faire car la javadoc est une source indispensable pour faire du Java, et elle existe qu'en Anglais (et en Japonais si tu préfères )

    A plus

  5. #5
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    En fait le fichier, généré avec Properties, doit vivre. C'est à dire que sur ma carte, si je fais un click droit, j'ai un popup menu qui apparait avec -> Créer un nouveau point. Si je le crée, alors deux choses peuvent être possible.
    -Soit le fichier n'existe pas, on créera le premier point Point1.
    -Soit le fichier existe et on procèdera à l'ouverture du dernier point+1. Metons que mon dernier point soit Point3, il faudra créer Point4.

    Je coupe mon programme. Si je le rallume, j'ouvre le fichier créer avec Properties puis je prend le premier point -> Point1, je crée le point depuis les données, à la fin je passe au point2 (Point2n'estrpasprésent car détruit précédemment), il faut passé au point suivant.

    D'où ma question au sujet du gros fichier et de sa méthode d'accès / utilisation.
    D'où aussi mon autre question sur la meilleurs manière de faire et géré un fichier exportable servant de base de point.


    Quand à l'Anglais, j'arrive a comprendre un peu, mais c'est loin d'être mon truc. Je ne suis pas doué pour les langues parlés. Donc je ferais avec, et au pire je poserais des questions. Nulle questions n'est idiotes, et c'est en demandant que l'on avance, me semble-t-il.

    Cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne critiquais pas ton anglais, t'inquiète, j'ai mis du temps à m'y mettre aussi, juste que ça te servira énormément de pouvoir gérer la javadoc

    Sinon je pense que lorsque tu charges, tu ne devrais pas faire : last + 1
    J'ai utilisé quelque chose de ce genre, et j'ai bricolé une méthode qui retourne des sous Properties pour chaque bloc présent. par exemple une instance de Properties pour Point1, puis une pour Point2 etc etc...
    Sinon tu peux faire plus simple :
    • Tu sauvegardes lastUsed dans ton fichier properties et tu commences par le charger et par en faire un entier
    • Tester "Point<i>.*"
      • Si ça existe alors charger le point
      • Si ça n'existe pas, incrémenter <i> et continuer jusqu'à lastUsed

    ça devrait le faire

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2015, 17h17
  2. Réponses: 2
    Dernier message: 08/02/2010, 18h29
  3. [Stratégie] Stockage de données par utilisateur (mais pas en HttpSession)
    Par Ougha dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 16/05/2007, 14h42
  4. Réponses: 9
    Dernier message: 17/04/2004, 17h32
  5. [Choix SGBD] Application mono-poste mais beaucoup de données
    Par Wavyx dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 16/03/2003, 19h24

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