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 :

Créer un fichier texte si celui spécifié n'existe pas


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Par défaut Créer un fichier texte si celui spécifié n'existe pas
    Bonjour,

    Je désire créer un fichier texte, mais seulement si celui qui est spécifié en premier dans le programme n'existe pas. J'ai donc tenté le code suivant :

    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
    try
            {
                String nomFichier = "test2.txt"; // Fichier quelconque
                String ligne = "";
                BufferedReader lecteurFichier = null; // initialisation à “rien”
     
                lecteurFichier = new BufferedReader(new FileReader(nomFichier));
     
                while ((ligne = lecteurFichier.readLine()) != null)
                {
                    if (ligne.equals(courriel) && (!trouve))
                    {
                        System.out.println("Trouvé");
                        trouve = true;
                        nbTrouves++;
                    }
                    else
                    {
                        System.out.println("Pas trouvé");
                    }
                    lecteurFichier.close();
                }
            }
            catch (java.io.FileNotFoundException e)
            {
                File nomFichier = new File("Abonnés.txt");
            }
    Mais, aucun fichier n'est crée. Comment faire pour en créer un?

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    Pour créer un fichier il faut utiliser par exemple FileWriter.
    Toi tu lis uniquement, c'est normal que tu ne crées aucun fichiers.

    Cordialement,

    Dan

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Par défaut
    il suffit d'utiliser la méthode createNewFile();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File nomFichier = new File("Abonnés.txt");
    nomFichier.createNewFile();
    Attention, cette méthode est susceptible de lever une exception .

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File fichier = new File(nomFichier);
     
    if (! fichier.exists())
    {
      // tu crées le fichier texte ici par le biais d'un FileWriter par exemple
    }

    De rien,

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Par défaut
    Merci, c'est exactement ce que je cherchais

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Un petit exemple:
    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
     
       import java.io.*;
     
       public class SavoirSiUnFicHierExiste //S'il n'existe pas on le crée vide
       { 
          private static boolean outExiste;
          private static String ficOut;
          private static FileReader in = null;
          private static FileWriter out = null;
          private static String libFin = "                     FIN.";
     
          public static void main(String[] args)
          {
             ficOut = "monFichier.txt"; // Sans chemin complet sera créer dans le dossier de travail (user.dir)
     
             outExiste = true; //sera forcé false si n'existe pas
             try
             {
                in = new FileReader(ficOut); // pour savoir s'il existe ou non
             }
                catch (IOException ioe)
                {
                   outExiste = false;
                   javax.swing.JOptionPane.showMessageDialog(null, 
                      "\nLe fichier " + ficOut + " n'existe pas:\n"
                      + "Nous allons le créer.");
                   try
                   {
                      out = new FileWriter(ficOut);
                      out.write(""); // on le crée vide dans cet exemple
                   }
                      catch (IOException ioe2)
                      {
                         libFin = ioe2.toString().substring(31) + "\n\nÉCRITURE IMPOSSIBLE:\n"
                               //+ "(Le fichier " + ficOut + "\nest vraisemblablement en lecture seule).\n"
                               + "FIN.\n\n"
                               + "Remarques:\n\n"
                               + "-Voir le texte de la première ligne de ce message entre ().\n";
                      }
                }
             javax.swing.JOptionPane.showMessageDialog(null, libFin);
     
             if(out!=null)
             {
                try
                {
                   out.close();
                }
                   catch(IOException ioe)
                   {
                      System.out.println("Erreur: " + ioe.toString());
                   }
             }
          }
       }

  7. #7
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    1 - Pourquoi générer une exception (ce qui consomme pas mal niveau CPU) pour tester l'existence d'un fichier ? Une exception est ... exceptionnelle, dans 99% des cas c'est une mauvaise idée de compter dessus dans un algorithme pour faire quelque chose de nécessaire.

    2 - Pourquoi ne pas lire la javadoc avant de faire n'importe quoi ?
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Par défaut
    1 - Pourquoi générer une exception (ce qui consomme pas mal niveau CPU) pour tester l'existence d'un fichier ? Une exception est ... exceptionnelle, dans 99% des cas c'est une mauvaise idée de compter dessus dans un algorithme pour faire quelque chose de nécessaire.


    Je vais poser une question qui risque de paraitre débile mais bon :

    pourquoi, dans toute les réponse que j'ai lu, préconise t-on l'utilisation d'un FileWriter pour créer le fichier alors que la méthode createNewFile() de la classe File est prévu pour ?

  9. #9
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par MigouW Voir le message


    Je vais poser une question qui risque de paraitre débile mais bon :

    pourquoi, dans toute les réponse que j'ai lu, préconise t-on l'utilisation d'un FileWriter pour créer le fichier alors que la méthode createNewFile() de la classe File est prévu pour ?
    Non non elle n'est pas débile, il est vrai que la méthode createNewFile fait exactement ça seulement mais, il y a un mais

    Je suis parti du principe qu'il y avait quelque chose à mettre dans le fichier texte (mais j'ai peut-être tort).

    Du coup faire un createNewFile va créer le fichier mais après il va falloir l'ouvrir, avec un FileWriter par exemple, pour écrire ce qu'il faut dedans. Auquel cas un appel à exists() est surement plus efficace.

    Après si je me suis trompé et qu'il s'agit juste de faire un touch du fichier texte, alors c'est toi qui est dans le vrai

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Par défaut
    Ok c'est ce que je pensais merci d'avoir éclairé mon cerveau.

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Citation Envoyé par bulbo Voir le message
    1 - Pourquoi générer une exception (ce qui consomme pas mal niveau CPU) pour tester l'existence d'un fichier ? Une exception est ... exceptionnelle, dans 99% des cas c'est une mauvaise idée de compter dessus dans un algorithme pour faire quelque chose de nécessaire.

    2 - Pourquoi ne pas lire la javadoc avant de faire n'importe quoi ?
    J'accepte la remarque n° 1 même si je ne sais pas ce que signifie "consomme pas mal niveau CPU" et ce que peut consommer "exists()".

    Si j'ai donné cet exemple (à ne pas suivre donc !!!) c'est pour montrer une autre façon de savoir si un fichier existe.

    Quant à la seconde remarque; c'est un peu sévère non...

    Cordialement,

    Dan

  12. #12
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Un peu sévère ?

    Pour moi c'est un peu comme si, pour savoir si une porte est fermée, tu te jetais dessus tête la première, au lieu d'utiliser la clenche.

    Et le catch correspond à ton reveil, si tu es aux urgences c'est qu'elle était fermée.
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Pour moi; l' "exception Java" c'est la clenche et je l'utilise quand je veux ouvrir une porte...
    De la même façon que pour ouvrir une boîte de conserve j'utiliserais un ouvre-boites.

    Ne pense surtout pas que je n'apprécie pas ton humour !!!

    Cordialement,

    Dan

  14. #14
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Bon autre exemple:

    Exceptionellement tu sors de chez toi en sautant par la fenêtre du premier parce qu'il y a le feu au rez de chaussé. En temps normal tu prends la porte.

    Normalement tu utilises la fonction exists() pour savoir si un fichier existe sur le disque..
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  15. #15
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    On insistera jamais assez sur le fait qu'un "try catch" correspond à un cas d'erreur qui ne correspond pas à une utilisation normal du programme !

    Cela n'est pas fait pour remplacer des tests...

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/02/2014, 11h18
  2. Lots DTS : créer un fichier texte ...
    Par steufleg dans le forum Windows
    Réponses: 2
    Dernier message: 08/02/2006, 19h07
  3. Créer un fichier texte
    Par Fedaykin7 dans le forum Langage
    Réponses: 7
    Dernier message: 27/01/2006, 15h26
  4. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 20h53
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 12h17

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