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 :

Lire et ecrire un entier a partir d'un fichier TXT


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut Lire et ecrire un entier a partir d'un fichier TXT
    Bonjour tout L monde,

    J'ai un petit probleme pour assigner des identificateurs (entier) à des elements car je suis obliger de proceder comme suit :

    J'ai au depart un fichier vide ,en premier lieu j'ecrit 0(id=0) dans la premier ligne comme ça le premier id affecter est 0 ,puis pour genere un autre id pour l'element suivant : je doit lire le dernier identificateur l'incrementer puis l'ajouter dans la derniere ligne .Donc le fihcier ou se trouve les ids exp identificateur.txt sera de la forme :

    0
    1
    2
    3

    poure genrer un nouveau je prend le dernier (3) cad je doit lire la derniere ligne l'incrementre ->4 puis le retourner pour l'affcter puis l'ecrir dans le fichier pour le stocker dans la dernier ligne.

    J'ai essayer d'utiliser les fonction FileWriter et FileReader pour realiser ce programme qui me retournes des id de la sorte mais ça ne donne rien.

    Je serais ravi d'avoir vos propositions .

  2. #2
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par Viscapon Voir le message
    J'ai essayer d'utiliser les fonction FileWriter et FileReader pour realiser ce programme qui me retournes des id de la sorte mais ça ne donne rien.
    C'est-à-dire ? Tu n'arrive pas à coder la méthode de lecture/écriture du fichier ? Une stacktrace ?

    Sinon sur le fond, ta stratégie d'utilisation du fichier comme persistance n'est pas très optimisée. A quoi servent toutes les lignes avant la dernière à un instant donné ? Ton générateur doit-il donner des id différents entre différentes exécutions de ton programme ? Si non, il peut tout gérer en mémoire, Si oui, il doit bien persister son état entre 2 exécutions, donc lors de l'arrêt du programme, et pas à chaque id généré.
    Sérialise ton générateur directement dans un fichier avec un ObjetOutputStream. Lors de la prochaine exécution, désérialise depuis le fichier, et le générateur sera là.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    J'arrive pas a trouver un algorithme qui fasse tourner ce programme de plus c la premiere fois que j'utilise l'ecriture ou la lacture dans un fichier avec java .
    D'autres part concernat cette startegie elle a l'aventage de garder tout les id(entier) assignés dans un fichier et ce meme fichier nous aide a genrer des id qui ne se repéte pas vue qu'a chaque generation je prend la plus grande valeur qui ce trouve a la dernier ine et je l'incremente .

    Voila...

  4. #4
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    A quoi ça sert de garder l'historique des id générés quand les id sont des entiers avec un incrément de 1 ? Avec uniquement la dernière ligne de ton fichier on devine facilement l'historique... Sans parler de la taille du fichier après quelques millions d'id générés, et du temps pour lire toutes les lignes avant d'arriver à la dernière.
    Ensuite, de quel algorithme parles-tu ? L'incrément ?

    Concernant le fichier, il te faut pour la lecture un FileWriter pour ajouter du contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int id = 1243;
    FileWriter fw = new FileWriter("C:\\monfichier.dat", true)
    fw.write(id);
    fw.close();
    Et un FileReader pour lire le contenu (avec une belle boucle dans ton cas pour arriver au dernier id)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FileReader fr = new FileReader("C:\\monfichier.dat");
    int id = fr.read();

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    en fait j'ai eu d'abrd un prob dans l'ecriture j'ai utilser le code que tu m'a proposer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    int id = 1243;
    FileWriter fw = new FileWriter("C:\\monfichier.dat", true)
    fw.write(id);
    fw.close();
    une autre question ne doit -on utilser un try + catch puisque il s'agit de fichier ,de plus esct qu'il ajoute le nombre automatiquemnt dans la derniére ligne .ou bine on doit le specifier car dans chaque ligne il doit y avoir un seul nombre.

  6. #6
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Oui effectivement, si tu veux voir dans le fichier texte le nombre 1234 et un seul nombre par ligne, il faut plutôt écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fw.write(String.valueOf(id));
    fw.write(System.getProperty("line.separator"));
    Le code va bien faire l'ajout à la dernière ligne, car le FileWriter est construit avec true pour 2eme argument, qui signifie qu'on ajoute du contenu à la fin du fichier (cf. javadoc).

    Oui pour la gestion des exceptions, ce n'est pas spécifique au fichier, c'est pour tout appel de méthode déclarant des exceptions.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    ça marche pour l'ecriture mais concrenant ta remarque pour la lecture de la derniere ligne


    Et un FileReader pour lire le contenu (avec une belle boucle dans ton cas pour arriver au dernier id)
    pourkoi je suis obligé de faire une boucle ? ne peut on pas lire directment la dernier la line ,sinon comment je doit faire cette boucle pour atteindre le dernier chifrre qui se trouve a la dernier line et el recuperer pour que je l'incremente apres ?

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

Discussions similaires

  1. ecrire un entier dans un descripteur de fichier
    Par nicoesenlamierda dans le forum Linux
    Réponses: 17
    Dernier message: 12/09/2008, 16h09
  2. Réponses: 2
    Dernier message: 16/03/2008, 18h15
  3. Lire des données a partir d'un fichier txt
    Par walido dans le forum C#
    Réponses: 13
    Dernier message: 30/05/2007, 13h22
  4. Réponses: 3
    Dernier message: 03/02/2006, 06h54
  5. lire un champ de bit a partir d'un fichier
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 09/08/2005, 12h53

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