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 :

Suppression fichier : chercher les readers, writers ou buffers ouverts


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut Suppression fichier : chercher les readers, writers ou buffers ouverts
    Bonjour à tous,

    Je cherche en vain à supprimer un fichier, j'ai essayé les méthodes delete() et deleteOnExit();

    D'après ce que j'ai pu trouver sur le net, il est très probable que j'ai un process utilisant le fichier qui soit toujours ouvert. Après relecture de mon code je pense avoir tout correctement fermé, mais je cherche quand même un moyen de vérifier tout ça car je n'arrive toujours à supprimer mon fichier.

    Je cherche à supprimer avec delete, mais les traitements utilisant le renameTo() ne fonctionnent pas non plus, par contre la copie de fichier fonctionne. J'ai également testé canRead(), canWrite() et canExecute(), tous me renvoient true.

    Des conseils pour tracker si je n'aurai pas oublié de fermer quelque chose?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si tu es sous linux, un lsof de ton process te dira si oui ou non le fichier est toujours ouvert par lui. Ca ne te dira par contre pas où dans le code il est ouvert.

    Si tu es sous un windows récent, un delete dans l'explorateur te dira pourquoi ce n'est pas possible de supprimer le fichier.

    Il faut aussi savoir une particularité de la JVM, il me semble que certains handle de fichiers ne sont libérés dans le système que lors du gc des objets les référencant, ce qui rend plus difficile de prédire quand le fichier sera effacable :/

  3. #3
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    effectivement, windows m'informe que le fichier est utilisé tant que la JVM fonctionne.

    Il me faut donc pouvoir lister mes readers et autres encore ouverts, vous auriez une idée?

    Ou peut être forcer le GC?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Kihmé Xs Voir le message
    Il me faut donc pouvoir lister mes readers et autres encore ouverts, vous auriez une idée?
    Les ajouter dans une liste chaque fois que tu en ouvres un, les en enlever quand tu les fermes.

    Citation Envoyé par Kihmé Xs Voir le message
    Ou peut être forcer le GC?
    J'ai des doutes. Effacer des fichiers que j'ai ouverts puis fermés, je fais ça tout le temps sous WinXP, Win Vista et linux. Jamais eu le moindre problème tant que je le fais après avoir fermé le fichier.
    Je peux pas être sûr : en théorie le problème pourrait très bien se poser, ça dépend comment Java gère les handles et le sens qu'il donne à close(). Mais en principe s'il y avait eu un problème, pas mal de gens tomberaient dessus plus souvent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il me semblait que ces problèmes étaient récurrent avec les jvm 1.4 (nettoyage des handle dans une finalisation) et antérieures. Mais il doit clairement être corrigé depuis.

    Si t'as un doute, tu boucle pendant 10 minute sur un system.gc(), tu fais des grosses allocations de mémoire et tu réessaie le delete. Tes objet auraont à coup sur été nettoyés pour faire de la place si il sont collectables

  6. #6
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    Après avoir bien vérifier que tout ce que j'ouvrais était bien fermé j'ai fais mes tests sur unix et là mes fichiers se déplacent ou se suppriment correctement. Allez savoir...

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

Discussions similaires

  1. Macro : Chercher les bons fichiers de liaisons.
    Par PAULOM dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/06/2009, 15h44
  2. [WD12] Chercher les doublons dans un fichier texte
    Par matt1704 dans le forum WinDev
    Réponses: 17
    Dernier message: 11/06/2009, 08h31
  3. Réponses: 4
    Dernier message: 02/10/2008, 10h47
  4. Réponses: 5
    Dernier message: 18/01/2006, 14h05
  5. Suppression de tous les fichiers textes d'un répertoire
    Par Cathy dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/09/2005, 17h11

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