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

VB.NET Discussion :

Supprimer un dossier locké


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Supprimer un dossier locké
    Chalut tout le monde.

    J'ai fait un petit programme qui permet de créer un fichier texte que j'enregistre dans un dossier temporaire (que je nomme TEMP).
    Si mon programme dit que ce dossier temporaire existe déjà, il le supprime, en faisant le code suivante:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If IO.Directory.Exists(local_adresseTEMP) Then
                IO.Directory.Delete(local_adresseTEMP, True)
            End If


    Jusque là, tout marchait impeccable, et hier, un soucis s'était installé : le dossier TEMP ne pouvait pas être supprimé, l'erreur ainsi remontée disait que le chemin vers ce fichier texte était en "access denied" (accès refusé). J'ai alors essayé de supprimer manuellement ce dossier, ça n'a pas marché, ni même le fichier qui s'y trouvait.
    J'ai alors essayé de me connecter sur le serveur de notre client, là où ce dossier temporaire est crée, et là, la suppression s'est passée sans problème, ce qui a permis à notre client de refaire fonctionner mon programme.

    Je me demandais alors s'il y aurait un moyen pour pouvoir supprimer ce dossier temporaire sans qu'il y ait d’accrochage, comme ça a été le cas?
    Dernière modification par Invité ; 21/11/2014 à 11h41.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Par défaut
    Chaluts aussi,

    On dirait que ton fichier texte est déjà ouvert par un tiers...
    Ça pourrait peut-être t'aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            ' à la création :
            Dim dir = New System.IO.DirectoryInfo("c:\temp")
            dir.Attributes = dir.Attributes And Not System.IO.FileAttributes.[ReadOnly]
            'suppréssion
            dir.Delete()
    A +

  3. #3
    Invité
    Invité(e)
    Par défaut
    Chalut,

    seulement voilà, j'ai fait un projet de type console, entre le moment où je créée mon dossier temporaire et le moment ou je le détruis, il doit y avoir un temps d’exécution de l'ordre du dixième de seconde, je ne vois pas pas une quelconque personne pourrait avoir le temps d'ouvrir l'unique fichier qui s'y trouve...

    Sinon, j'ai essayé ton code, il ne marche pas de mon côté, j'ai mis cela:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            global_dir = New System.IO.DirectoryInfo(local_adresse) 'variable globale ici
            If global_dir.Exists Then
                global_dir.Attributes = global_dir.Attributes And Not System.IO.FileAttributes.ReadOnly
                global_dir.Delete(True)
            Else
                global_dir.Create()
               'quand me créée mon fichier, cette ligne fait planter le programme
               'erreur : Valeur d'attributs de fichier ou de répertoire non valide
                global_dir.Attributes = global_dir.Attributes And Not System.IO.FileAttributes.ReadOnly 
               'j'ai alors remplacé la ligne précédente par : global_dir.Attributes = FileAttributes.Temporary
               'le message d'erreur reste inchangé
            End If

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    Bonjour, as-tu essayer Form1_Load => tu créer un dossier et dans Form1_FormClosing =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If File.Exists("le chemin du dossier") Then
                File.Delete("le chemin du dossier")
            End If
    cordialement,

  5. #5
    Invité
    Invité(e)
    Par défaut
    re-bonjour. Comme je l'ai dis dans mon précédent message, j'ai un projet de type console, donc je n'ai pas d'élément Form1.
    Sinon, je n'ai pas essayé ton truc mais est-ce que ça peut marcher? En anglais, le mot "file" veut dire "fichier", peut-il être utilisé sur un dossier?

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Le code de hacker59 ne s'applique qu'aux fichiers.

    Ce code (que tu a s récupérés) correspond donc exactement aux même mais avec les dossier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     global_dir = New System.IO.DirectoryInfo(local_adresse) 'variable globale ici
            If global_dir.Exists Then
    Mais tu as dis que ça, ça ne marchait pas ? Il refuse toujours de le supprimer ?

    Je pense pas que le problème soit une question d'autorisations sur le dossier, quand tu créer le dossier les droits doivent être basique.
    Pour tester, execute du code qui ne fait QUE créer le dossier, va voir dans Windows les droits du dossier, si il n'est pas readonly, alors ce n'est pas le problème.

    Moi je pense plutôt à un problème Windows, un truc qui pourrait être que le dossier contient un fichier ouvert par exemple...
    Ou suppression trop rapide...

    Et quand tu as ton exception, tu n'as pas plus de détail à part Access Denied ? Y'a pas de Inner Exception ou des détails ?

Discussions similaires

  1. Empecher un client de supprimer les dossiers Administrateur local
    Par alex_m94 dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 15/11/2007, 16h11
  2. comment supprimer un dossier
    Par legrunge59570 dans le forum VB.NET
    Réponses: 8
    Dernier message: 13/08/2007, 12h41
  3. supprimer un dossier vide chez free
    Par lionjohn dans le forum Langage
    Réponses: 1
    Dernier message: 24/06/2007, 18h57
  4. Supprimer un dossier
    Par Doldz dans le forum Delphi
    Réponses: 4
    Dernier message: 01/06/2007, 10h38
  5. comment supprimer un dossier
    Par CIBOOX dans le forum Windows XP
    Réponses: 12
    Dernier message: 03/01/2007, 19h51

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