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 :

Flux entrée sortie et exceptions


Sujet :

Entrée/Sortie Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut Flux entrée sortie et exceptions
    Bonjour à tous,

    encore une de mes questions certainement évidente...

    Suis-je obligé de traiter les exceptions (bloc try catch) à chaque fois que j'utilise les méthodes de DataInputStream pour les accés fichiers ? Car au début je ne le faisais pas et Eclipse m'envoyait bouler mais maintenant Eclipse a tout corriger et ça marche quand même pas.

    Merci de votre réponse.
    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
     
    import java.io.*;
    public class Io_graph {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
     
    		// TODO Auto-generated method stub
     
    		// lire les données en provenance d'un fichier sur le disque
    		FileInputStream fichier = new FileInputStream("data.dat");
    		DataInputStream flux = new DataInputStream(fichier);
     
    		boolean eof = false;
    		int valeur;
    		while (!eof){
    			valeur = flux.readInt();
    			if (valeur != -1)
    			{
    				System.out.print(valeur);
    			}
    			else
    			{
    				eof=true;
    				System.out.print("Fin du fichier");
    				fichier.close();
    			}						
    		}			
    	}
    }
    PS : ça c'est le code sans les exceptions

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    oui il faut les mettre !

    Apres faut bien les placer et ne pas oublier le bloc finally pour fermer le flux proprement. Il y un un tuto de disponible sur java.io

    Sinon, montre nous le code (avec les exceptions) pour corriger si tu n'y arrive pas ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Bon jva essayer merci, je reviens dans pas longtemps je pense ...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Magicien d'Oz
    Suis-je obligé de traiter les exceptions (bloc try catch) à chaque fois que j'utilise les méthodes de DataInputStream pour les accés fichiers ?
    Cela dépend :
    • OUI si tu veux faire un code propre et une application robuste
    • NON si tu peux te permettre de faire planter méchamment ton application en cas de problème...
    Citation Envoyé par Magicien d'Oz
    Car au début je ne le faisais pas et Eclipse m'envoyait bouler mais maintenant Eclipse a tout corriger et ça marche quand même pas.
    Ce qui veut dire ?????


    Enfin il faut mieux fermer le flux dans un bloc try/finally pour être sûr de le fermer quoi qu'il arrive, ce qui donne :
    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
            try {
                // lire les données en provenance d'un fichier sur le disque
                DataInputStream flux = new DataInputStream(new FileInputStream("data.dat"));
                try {
     
                    // Traitement ici
     
                } finally {
                    // Fermeture du flux
                    flux.close();
                }
            } catch (IOException e) {
                // Traitement des exceptions
                e.printStackTrace();        
            }
    a++

    [edit] grillé... c'est ca quand on oublie de poster le message avant d'aller au café

  5. #5
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Ben merci, mais ça marche pas trop quand même, ya un truc que j'ai pas du comprendre...

    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
     
    import java.io.*;
    public class Io_graph {
     
     
    	public static void main(String[] args) {
    		try {
     
    			// lire les données en provenance d'un fichier sur le disque
    			FileInputStream fichier = new FileInputStream("/home/loic/PROJETS/Io_graph/data.dat");
    			DataInputStream flux = new DataInputStream(fichier);
     
    			boolean fin = false;
    			int valeur;
    			try{
    			while (!fin){
    				valeur = flux.readInt();
    				if (valeur != -1)
    				{
    					System.out.print(valeur + " ");
    				}
    				else
    				{
    					fin=true;
    					System.out.print("Fin du fichier");
    					fichier.close();
    				}
    			}}catch(EOFException eof) {flux.close();}
    			}catch (IOException e) {System.out.println("Erreur accès au fichier");}
    	}
    }
    A part le finally pour peaufiner j'ai tout mis et voilà la sortie

    824193568 857737780 540352566

    Alors que j'aurais du avoir 1 2 3 4 5 6 7 8 ...

    Comprends pas tout moi...

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    as tu lus le tuto ?

    je pense que tu y arriveras avec ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    En attente de confirmation mail
    Inscrit en
    Octobre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Merci pour le tutos mais je faisais avec d'autres.

    Je crois que mon problème vient pluôt du fichier : j'y ai écrit dedans avec Emacs donc du coup j'ai pas le même codage. Il faut que j'écrive dedans avec un autre prog java !!

    Merci de votre aide !

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Magicien d'Oz
    A part le finally pour peaufiner
    Le try/finally est un des points les plus importants pour avoir un code sécurisé. Ca ne mange pas de pain de l'utiliser !!!

    Sinon concernant ta sortie c'est normal, les DataInputStream lisent des données brutes. et readInt() lit un int, c'est à dire 4 octets (si je ne me trompe pas).

    Si tu lis un fichier texte ce résultat est tout à fait normal...

    a++

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Il te faut decorer ton flux avec un LineNumberReader, un BufferedReader ou un autre type de Reader dedie a la lecture de fichiers textes/flux de characteres (a l'opposee des fichiers binaires/flux d'octets).

    Citation Envoyé par Javadoc - classe FileReader
    Convenience class for reading character files.
    Citation Envoyé par Javadoc - classe Reader
    Abstract class for reading character streams.
    Citation Envoyé par Javadoc - classe InputStreamReader
    An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BufferedReader reader = new BufferedReader(new FileReader(file));
    LineNumberReader reader = new LineNumberReader(new FileReader(file));
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. [Runtime] Shell et flux d'entrée sortie
    Par Adrael dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 02/05/2014, 17h14
  2. Flux entrée sortie
    Par kallelomar dans le forum Général Java
    Réponses: 1
    Dernier message: 15/05/2012, 12h52
  3. Réponses: 0
    Dernier message: 24/04/2012, 21h30
  4. Flux d'entrée/sortie par référence.
    Par max_batteur_fou dans le forum C++
    Réponses: 3
    Dernier message: 13/01/2011, 23h54
  5. Flux entrée sortie avec Struts
    Par stef_ich dans le forum Struts 1
    Réponses: 0
    Dernier message: 10/04/2010, 14h57

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