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

Langage Java Discussion :

[Problème de persistance d'un BufferedReader]


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 38
    Points : 32
    Points
    32
    Par défaut [Problème de persistance d'un BufferedReader]
    Bonjour,

    Le contexte :

    En fait je veux ouvrir un seul flux de données et pouvoir le réutiliser plusieurs fois.

    Ouverture du flux

    fonction lecture 1 -> (lit un bloc de ligne)
    fonction lecture 2 -> (lit une ligne)
    fonction lecture 3 -> (lit une ligne)

    Fermeture du flux.

    J'ai pensé à la sérialisation mais c'est pareil ça ne marche qu'une seule fois.(voir ci-dessous)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
    public class MainBuffered {
     
        protected static TestBufferedReader obj1 = null;
     
        protected static TestBufferedReader obj2 = null;
     
        public static void main(String args[]) {
     
            try {
                // Sauvegarde de l'objet
                sauvergardeObjet();
     
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
     
            try {
                lectureObjet().testerlecture();
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
     
     
     
            try {
                lectureObjet().testerlecture();
            } catch (IOException e1) {
                e1.printStackTrace();
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
        }
     
        protected static void sauvergardeObjet() throws ClassNotFoundException,
                IOException {
            obj1 = new TestBufferedReader(
                    "C:/eclipse/workspace/testDiverses/source.txt");
     
            //obj1.testerlecture();
     
            ObjectOutputStream out;
            out = new ObjectOutputStream(new FileOutputStream("buffered.out"));
            out.writeObject(obj1);
            out.flush();
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(
                    "buffered.out"));
     
            out.close();
     
            System.out.println("Sauvegarde de l'objet 1 OK");
        }
     
        protected static TestBufferedReader lectureObjet() throws IOException,
                ClassNotFoundException {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(
                    "buffered.out"));
            TestBufferedReader obj2 = (TestBufferedReader) in.readObject();
            return obj2;
     
        }
    }
    Auriez vous idées pour y arriver ?

    Cordialement,

    xarius

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je comprends pas trop ton problème, si tu veux sauvegarder/charger 3 trois objets à la suite dans un fichier sans ouvrir - lire/ecrire - fermer à chaque fois, rien ne t'empeche de faire trois appels successifs aux méthodes writeObject/readObject.
    Sinon, je pense que c'est l'architecture de ta classe qui n'est pas correct ( c'est pas très joli tous ces trucs "static" ! ).
    Je te propose donc la méthode suivantes ( il y en a d'autres ) :
    - ouvrir les deux flux dans le constructeur de ta classe
    - créer une méthode lire qui te retourne le resultat de readObject.
    - créer une méthode écrire qui prend en paramètre un objet passé à la méthode writeObject.
    - créer une méthode close permettant de fermer les deux correctement.

    Avec ce modèle, les flux restent ouverts et opérationnels pendant toute la durée d'existance de ton instance.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Voila en code ce que je voudrai faire. Appeler plusieurs fois lire pour pouvoir relire le fichier en entier à chaque fois.

    Mais ici dans le code il le fait q'une seule fois.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    package divers;
     
    import java.io.BufferedReader;
    import java.io.IOException;
     
    spublic class GestionFichier {
     
    	public static void main(String[] args) {
     
    		BufferedReader reader = null;
     
    		LireFichier lecture = new LireFichier();
    		reader = lecture.ouvrirFlux();
     
    		lireFichier(reader);
     
    		lireFichier(reader);
     
    		lireFichier(reader);
     
    		// fermeture du flux
    		lecture.fermerFlux(reader);
    	}
     
    	public static void lireFichier(BufferedReader reader) {
    		String ligne = null;
     
    		try {
    			while ((ligne = reader.readLine()) != null) {
    				System.out.println(ligne);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    package divers;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class LireFichier {
     
    	public BufferedReader ouvrirFlux() {
    		File cheminFichierData = null;
    		FileReader fluxLectureTexte = null;
    		BufferedReader buffer = null;
     
    		try {
    			cheminFichierData = new File("source.txt");
     
    			fluxLectureTexte = new FileReader(cheminFichierData);
    			buffer = new BufferedReader(fluxLectureTexte);
     
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
     
    		return buffer;
    	}
     
    	public void fermerFlux(BufferedReader buffer) {
     
    		try {
    			buffer.close();
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    Merci.

    xarius

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

Discussions similaires

  1. Problème de persistence
    Par maliba dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/12/2007, 11h54
  2. many-to-many problème de persistance
    Par kokumbo dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/11/2007, 16h11
  3. [jBPM][4.2 GA]Problème de persistence
    Par zegreg dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 30/07/2007, 18h32
  4. Problème de persistance de ma connection en ADO ?
    Par hesky dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/03/2007, 14h32
  5. Problème LDAP (persistant!!!!!)
    Par onouiri dans le forum Développement
    Réponses: 15
    Dernier message: 27/11/2005, 11h00

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