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

Java Discussion :

Ecriture dans un fichier impossible


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Ecriture dans un fichier impossible
    Bonjour,

    A cette heure ci tout le monde doit être couché .. mais bon, je tente quand même de vous exposer mon problème.

    Je souhaite écrire l'arborescence (Fichiers + Sous-repertoire) dans un fichier.txt.

    Mon programme fonctionne partiellement, l'arborescence s'écrit dans la console, mais pas dans le fichier, je ne comprend pas pourquoi ..

    Tentez de compiler ce code, vous vous rendrez vite compte du problème.

    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
    public class ListerMusiques {
     
    	private static void ListerEtEcrire (File file, int level) throws IOException
    	{
    		//Création du fichier texte qui va contenir l'arborescence du repertoire
    		FileWriter writer = new FileWriter("C:\\ListeMusiques.txt");
     
    		for (File f : file.listFiles())
    	    {
    	        for (int i = 0; i < level; i++)
    			{
    	        	System.out.print ("     ");
    	        	writer.write("     ");	            
    			}
     
    	        if (f.isDirectory())
    	        {
    	            System.out.println ("" + f.getName() + "\r\n");
    	            writer.write ("" + f.getName() + "\r\n");
    	            ListerEtEcrire (f, level + 1);
    	        }
    	        else
    	        {
    	            System.out.println ("    " + f.getName() + "\r\n");
    	            writer.write ("    " + f.getName() + "\r\n");
    	        }
    	    }
    	    writer.close();
    	}
     
    	public static void main (String[] args) throws IOException
    	{
    		//Repertoire a explorer
    		File file = new File ("C:\\Musiques");
    	    ListerEtEcrire (file, 0);
    	}
    }
    Je débute en java alors ne m'en voulez pas trop ..

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Le forum est fait pour ça, pas besoin de t'excuser.
    Premièrement il manque l'appel à la méthode flush() au niveau du writer.
    Ensuite, tu as un problème au niveau de ton appel récursif.
    Dans le cas où f est un répertoire, tu rappelles ta méthode ListerEtEcrire et donc tu réinstancies ton FileWriter à chaque appel.
    Une solution simple serait d'instancier ton FileWriter dans ta méthode main et de le passer en paramètres de ta méthode ListerEtEcrire, sans oublier le close() aussi dans la méthode main.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    Premièrement il manque l'appel à la méthode flush() au niveau du writer.
    Pas du tout puisqu'il y a un close(). flush() n'est utile que pour des cas très spécialisés.

    +1 sur le reste
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci à NoClassDefFound et thelvin pouv votre aide, en particulier à NoClassDefFound, car j'ai suivi ton conseil, et le problème est résolu.

    J'ai donc instancier mon FileWriter dans ma méthode main et je le passe en paramètres de ma méthode ListerEtEcrire, sans oublier le close dans ma méthode main.

    Je met le code complet (sait-on jamais, si quelqu'un a le même problème que moi ... ) :

    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
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
     
    public class ListerMusiques {
     
    	private static void ListerEtEcrire (File file, int level, FileWriter writer) throws IOException
    	{
    		for (File f : file.listFiles())
    	    {
    	        for (int i = 0; i < level; i++)
    			{
    	        	System.out.print ("\t");
    	        	writer.write("\t");	            
    			}
     
    	        if (f.isDirectory())
    	        {
    	            System.out.println ("" + f.getName());
    	            writer.write ("" + f.getName() + "\r\n");
    	            ListerEtEcrire (f, level + 1, writer);
    	        }
    	        else
    	        {
    	            System.out.println ("\t" + f.getName());
    	            writer.write ("\t" + f.getName() + "\r\n");
    	        }
    	    }
    	}
     
    	public static void main (String[] args) throws IOException
    	{
    		FileWriter writer = new FileWriter("C:\\ListeMusiques.txt");
     
     
    		System.out.println ("MES MUSIQUES");
            System.out.println ("--------------------------------------------\r\n");
     
    	            writer.write ("MES MUSIQUES");
    	            writer.write ("--------------------------------------------\r\n");
     
    		//Repertoire a explorer
    		File file = new File ("C:\\Musiques");
    	    ListerEtEcrire (file, 0, writer);
     
     
    	    writer.close();
    	}
    }

    Encore merci à vous deux pour votre aide.

    Bonne soirée

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

Discussions similaires

  1. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33
  2. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  3. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46
  4. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

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