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 :

Impossible d'effacer un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut Impossible d'effacer un fichier
    Bonjour,

    Je créé un fichier temporaire que je ne parviens pas à effacer. Voici ma manière de procéder :

    Ecriture du fichier :
    bytes est un byte [] contenant le flux à écrire
    totalBytes est la taille du flux à écrire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                FileOutputStream fw = new FileOutputStream("nomDeFichier.txt");
                fw.write(bytes, 0, totalBytes);
                fw.close();
    Effacement du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            File aFile = new File("nomDeFichier.txt");
            if (aFile.exists())
            {
                if (aFile.delete())
                    System.out.println("Fichier temporaire effacé");
                else
                    System.out.println("Impossible d'effacer le fichier temporaire");
            }
    A chaque fois je reçois le message "impossible d'effacer". Quelle est mon erreur ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Salut,
    Tu es peut etre dans ce cas la
    UML avec VIOLET

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut
    Ton cas mentionne l'ommission de la fermeture d'un flux. Mais tu peux voir dans mon code que je ferme bien mon flux d'écriture.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    J'ai deja eu ce probleme dans le passe, sous Windows. Et le meme code fonctionnait avec Linux.
    Meme avec les File.deleteOnExit(), il me semble que le probleme demeurait.

    Je pense m'en etre tire en faisant quelquechose du genre:

    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
     
    // ecriture
    // ...
    fos.close();
    fos = null;
     
    // effacement
    // ...
     
    System.gc();
     
    File fle = new File(...);
     
    if (! fle.exists())
    {
      // problem
      return;
    }
     
    if (! fle.canWrite())
    {
      // problem
      return;
    }
     
     
    fle.delete();

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut
    Hello, alors j'ai rajouté ces lignes :

    Lors de l'écriture :
    Et j'ai également forcé le passage du GC comme tu me l'as conseillé.

    La fonction
    aFile.canWrite()
    me retourne true, mais mon fichier n'est toujours pas effacé.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Est-ce que tu peux en dire plus sur ta config?
    Systeme: Win2k, winXP, linux, ...
    Version de Java

  7. #7
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 139
    Points
    139
    Par défaut
    Si tu veux créer un fichier temporaire, utilise plutot la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File.createTempFile(prefixe,suffixe);

  8. #8
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    lut !

    j'ai résolu ce problème en annulant toutes mes variables concernant de près ou de loinle fichier en question et en fermant biensûr tous les flux, en l'appliquant aux objets :

    bufferedreader/writer
    file
    FileOutputsream/FileInputStream
    InputStream
    buffer (en écriture ou lecture)

    utilise les flush() avant de fermer, on sait jamais...

    Utilise au maximum des méthodes distinctes pour manipuler les fichiers comme ça tes objets crées ne restent valables que pour la méthode en question et sont rapidement nettoyés par le gc ensuite.

    +

  9. #9
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Après avoir fait un "write" sur ton fichier, fais un "flush", tu vas voir, ça résoud pas mal de problèmes... lol

  10. #10
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut
    J'ai tout essayé, mais rien ne marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                FileOutputStream fw = new FileOutputStream("monFichier.txt");
                fw.write(bytes, 0, totalBytes);
                fw.flush();
                fw.close();
                fw = null;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            System.gc();
            File aFile = new File("monFichier.txt");
            if (aFile.exists())
            {
                if (aFile.delete())
                        System.out.println("Fichier temporaire effacé);
                else
                        System.out.println("Impossible d'effacer le fichier temporaire);
            }
    J'utilise WinXP, Java version 1.4.2

    Y a-t-il possibilité de voir tous les flux ouverts ? Peut-être qu'un autre flux bloque le fichier, bien que je ne voie pas vraiment lequel.

  11. #11
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    annule les objet File aussi, et effectue les écritures lectures et destruction de fichiers dans des méthodes distinctes.
    sinon là je vois pas...

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

Discussions similaires

  1. java.io.File : Impossible d'effacer un fichier
    Par nicorama dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2009, 11h31
  2. Effacement de fichiers impossible.
    Par zippo dans le forum 1&1
    Réponses: 1
    Dernier message: 21/08/2008, 11h25
  3. Impossible d'effacer un fichier
    Par camboui dans le forum Windows XP
    Réponses: 7
    Dernier message: 25/06/2007, 23h25
  4. Impossible d'effacer le fichier
    Par pracede2005 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 21/05/2007, 11h56
  5. Réponses: 11
    Dernier message: 21/11/2005, 16h08

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