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 :

Tester si un fichier est vide + recup valeur dans ce fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut Tester si un fichier est vide + recup valeur dans ce fichier
    Bonjour,

    Je fais une application java d'ordonnancement de processus.

    Au début de cette application, je souhaite tester si un fichier.txt est vide.
    Si le fichier est vide, j'initialise un int nommé "ptr" à 0;
    Si le fichier n'est pas vide, j'initialise "ptr" avec l'entier stocké dans ce fichier.


    Mon fichier.txt en fait me sert à sauvegarder un entier qui représente la valeur avec laquelle j'initialise "ptr" à chaque exécution de mon programme.
    Un fichier de sauvegarde quoi.

    J'ai essayé de résoudre ce problème de plusieurs manières différentes.
    Mon problème majeur, c'est que j'ai remarqué que je ne pouvais pas créer de ObjectInputStream sur un fichier vide, ca me provoque toujours des EndOfFileException..


    J'ai donc essayé de faire un code qui fait ce que je demande:
    Voici le code:

    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
    package ordonnancement;
     
    import java.io.*;
     
    public class NewClass {
     
            public static void main(String[] args){
     
     
     
                    int ptr; 
                    File fich = new File("C:/Users/johann/Desktop/Test.txt");
                    System.out.println("La taille du fichier est : " + fich.length());
     
     
                    try {
                         ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/Users/johann/Desktop/Test.txt"));
                         ptr = in.readInt();
                         in.close();
                     }
                     catch(EOFException e) {
                            System.out.println("Fin du fichier atteint (fichier vide dans mon cas)");
                            ptr = 0;
                            System.out.println("valeur de ptr = " + ptr);
                     }
     
                    System.out.println("La valeur de ptr est : " + ptr);
                    System.out.println("La taille du fichier est : " + fich.length()); 
     
     
                    /* Execution tâche du fichier
                     * La valeur de ptr est suceptible d'être modifiée */
     
     
                    try {
                       ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:/Users/johann/Desktop/Test.txt"));
                       out.writeInt(ptr);  
                       out.flush();
                       out.close();
                    }
                    catch (Exception e1){ 
                        e1.printStackTrace(); 
                    }
     
     
            }
    Mais là déjà je ne peux même pas le compiler car il y a des erreurs.
    Je ne comprends pas pourquoi il me fait ces erreurs.
    Voici les lignes concernées..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
           ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/Users/johann/Desktop/Test.txt"));
            ptr = in.readInt();
            in.close();
          }

    Quelqu'un peut il m'expliquer les erreurs ?
    Et si c'est possible peut il me montrer un code qui saurait faire ce que je veux faire.. (Test fichier vide, initialisation de "ptr").. ?


    Merci beaucoup.

  2. #2
    Membre habitué
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Points : 132
    Points
    132
    Par défaut
    L'idéal serait que tu donnes l'erreur qui t'empêches de compiler.

    Je pense que ton problème vient du fait que le constructeur de ObjectInputStream est susceptible de lancer une IOException en cas de problème de lecture. Donc, il faut que tu rajoutes la récupération de cette exception. Tu peux, par exemple, faire comme pour l'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
        // Manipulation de ObjectInputStream
        ...
    } catch (IOException e){ 
        e.printStackTrace(); 
    }
    Ensuite, pour éviter d'appeler ObjectInputSteam sur ton fichier vide, il te suffirait de faire un test sur la longueur du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (fich.length()>0){
        // Lecture du fichier
        ...
    } else {
        ptr = 0;
    }
    La Connerie est une autre forme d'intelligence

  3. #3
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Merci beaucoup.
    J'ai enfin réussi ce que je voulais faire !!

    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
    package ordonnancement;
     
    import java.io.*;
     
     
    public class NewClass7 {
     
            public static void main(String[] args){
     
     
     
                    int ptr = 0; 
                    File fich = new File("C:/Users/johann/Desktop/Test.txt");
                    System.out.println("La taille du fichier au départ est : " + fich.length());
     
                    if (fich.length() > 0){
     
                        try {
                            ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/Users/johann/Desktop/Test.txt"));
                            ptr = in.readInt();
                            in.close();
                        }
                        catch (IOException e){
                            e.printStackTrace();   
                        }
     
                    }
     
                    else {
     
                        ptr = 0;
     
                    }
     
                    System.out.println("Voici la valeur de 'ptr' AVANT execution du coeur du programme : " + ptr);
     
                    /* Execution coeur du programme, ptr est suceptible d'evoluer */
     
                    ptr++; /* <-- simulation de l'évolution de ptr */
     
                    /* Fin Execution coeur du programme */
     
                    System.out.println("Voici la valeur de 'ptr' APRES execution du coeur du programme : " + ptr);
     
     
                    try {
                        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:/Users/johann/Desktop/Test.txt"));
                        out.writeInt(ptr);
                        out.flush();
                        out.close();
     
                    }
                    catch (IOException e1){
                            e1.printStackTrace();   
                    }
     
                    System.out.println("La taille du fichier apres écriture de ptr est : " + fich.length());
     
     
            } /* FIN MAIN */
     
     
    } /* FIN CLASSE */
    Maintenant ça fonctionne !!

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

Discussions similaires

  1. [Joomla!] Passer une valeur d'un fichier templateDétails template "index.php" dans un fichier "index.php
    Par jacma dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/02/2015, 10h29
  2. Réponses: 8
    Dernier message: 19/12/2014, 14h12
  3. Réponses: 0
    Dernier message: 29/01/2012, 15h15
  4. Réponses: 24
    Dernier message: 23/12/2011, 16h20
  5. Réponses: 13
    Dernier message: 09/11/2011, 12h06

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