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 dans un fichier text


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut lire dans un fichier text
    Bonjour a tous,

    je voudrais savoir comment faire pour lire dans un fichier text qui est inclue dans un packages (ressource) de mon application.

    Voici le code que j'ai testé, mais avidement, il ne trouve pas le fichier

    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
     
    private String readFileFiltre(){
    		InputStream ips = null;
    		String chaine="";
    		try {
    			ips = new FileInputStream("/resources/filtre.txt");
     
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			String ligne;
    			while ((ligne=br.readLine())!=null){
    				System.out.println(ligne);
    				chaine+=ligne+"\n";
    			}
    			br.close(); 
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 
     
    		return chaine;
    	}
    auriez vous une idée pour mon probleme ? Sauriez vous si il me sera possible d'écrire dans ce fichier ?


    Je vous remercie 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
    pour lire dans le classpath, il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getClassloader().getResourceAsStream(nom)

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    merci, mais cela ne fonctionne pas ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ips = new FileInputStream(getClass().getClassLoader().getResourceAsStream("/resources/filtre.txt"));
    Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
    The constructor FileInputStream(InputStream) is undefined

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par hannibal.76 Voir le message
    merci, mais cela ne fonctionne pas ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ips = new FileInputStream(getClass().getClassLoader().getResourceAsStream("/resources/filtre.txt"));
    Tu peux éliminer le FileInputStream, il n'est pas utile dans ce contexte.

    J'ajouterai que c'est une excellente pratique de préciser l'encodage du fichier que l'on lit notamment lorsque le fichier contient des caractères accentués.

    De plus, il est de bon ton de placer toutes les fermetures de flux dans une clause finally.

    On peut aussi s'interroger sur le fait de traiter l'exception IOException éventuelle à un niveau supérieur plutôt que directement dans cette méthode ce qui éviterait d'avoir à renvoyer une valeur incorrecte.

    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
     
          private String readFileFiltre() {
    		String chaine = "";
    		try {
    			BufferedReader br = new BufferedReader(
    					new InputStreamReader(
    							getClass().getClassLoader().getResourceAsStream("/resources/filtre.txt"),"UTF-8")
    					);
     
    			try {
    				String ligne;
    				while ((ligne = br.readLine()) != null) {
    					System.out.println(ligne);
    					chaine += ligne + "\n";
    				}
     
    			} finally {
    				br.close();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		return chaine;
    	}

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Je ne comprend pas, j'ai maintenant un nullPointerException ...

    voici le code complet de ma class (bien vide pour l'instant)

    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
     
    package replaceDotAndUnderscorePerSpace;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    import javax.swing.JDialog;
    import javax.swing.JLabel;
     
    @SuppressWarnings("serial")
    public class EditionFiltre extends JDialog {
     
    	public EditionFiltre(AffichagePrinc fenetre) {
    		super(fenetre, "Edition du filtre");
     
    		add(new JLabel(readFileFiltre()));
    		pack();
    		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		setVisible(true);
    	}
     
    	private String readFileFiltre() {
    		String chaine = "";
    		try {
    			BufferedReader br = new BufferedReader(new InputStreamReader(
    					getClass().getClassLoader().getResourceAsStream(
    							"/resources/filtre.txt"), "UTF-8"));
     
    			try {
    				String ligne;
    				while ((ligne = br.readLine()) != null) {
    					System.out.println(ligne);
    					chaine += ligne + "\n";
    				}
     
    				} finally {
    				br.close();
    			}
    			} catch (IOException e) {
    			e.printStackTrace();
    			}
     
    		return chaine;
    	}
    }
    Les erreurs:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.io.Reader.<init>(Unknown Source)
    at java.io.InputStreamReader.<init>(Unknown Source)
    at replaceDotAndUnderscorePerSpace.EditionFiltre.readFileFiltre(EditionFiltre.java:28)
    at replaceDotAndUnderscorePerSpace.EditionFiltre.<init>(EditionFiltre.java:17)
    at replaceDotAndUnderscorePerSpace.AffichagePrinc$EcouteurMenu.actionPerformed(AffichagePrinc.java:193)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    et le visu de mon packages:



    Je vous remercie encore pour votre aide

  6. #6
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par hannibal.76 Voir le message
    Je ne comprend pas, j'ai maintenant un nullPointerException ...

    voici le code complet de ma class (bien vide pour l'instant)

    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
     
    package replaceDotAndUnderscorePerSpace;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    import javax.swing.JDialog;
    import javax.swing.JLabel;
     
    @SuppressWarnings("serial")
    public class EditionFiltre extends JDialog {
     
    	public EditionFiltre(AffichagePrinc fenetre) {
    		super(fenetre, "Edition du filtre");
     
    		add(new JLabel(readFileFiltre()));
    		pack();
    		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		setVisible(true);
    	}
     
    	private String readFileFiltre() {
    		String chaine = "";
    		try {
    			BufferedReader br = new BufferedReader(new InputStreamReader(
    					getClass().getClassLoader().getResourceAsStream(
    							"/resources/filtre.txt"), "UTF-8"));
     
    			try {
    				String ligne;
    				while ((ligne = br.readLine()) != null) {
    					System.out.println(ligne);
    					chaine += ligne + "\n";
    				}
     
    				} finally {
    				br.close();
    			}
    			} catch (IOException e) {
    			e.printStackTrace();
    			}
     
    		return chaine;
    	}
    }
    Les erreurs:



    et le visu de mon packages:



    Je vous remercie encore pour votre aide
    C'est qu'il ne trouve pas le fichier.

    Essaie en supprimant le premier slash dans la ligne où tu accèdes au fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BufferedReader br = new BufferedReader(new InputStreamReader(
    					getClass().getClassLoader().getResourceAsStream(
    							"resources/filtre.txt"), "UTF-8"));

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  7. #7
    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
    êtes vous sur que le fichier est bien dans le classpath à /resources/filtre.txt et pas à /filtre.txt ?

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    C'est qu'il ne trouve pas le fichier.

    Essaie en supprimant le premier slash dans la ligne où tu accèdes au fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BufferedReader br = new BufferedReader(new InputStreamReader(
    					getClass().getClassLoader().getResourceAsStream(
    							"resources/filtre.txt"), "UTF-8"));
    Merci, c'était effectivement le premier slash !!!! pourquoi, je ne sais pas, mais dans tous les cas, cela fonctionne

    Encore merci pour votre aide

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

Discussions similaires

  1. lire dans un fichier text
    Par khayate dans le forum VB.NET
    Réponses: 6
    Dernier message: 18/06/2007, 18h22
  2. Réponses: 11
    Dernier message: 25/01/2007, 18h20
  3. Réponses: 13
    Dernier message: 09/11/2006, 23h37
  4. [VB.NET]comment écrire/lire dans un fichier text
    Par zouhib dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/05/2006, 17h11
  5. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57

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