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

C# Discussion :

Processus genant un effacement de fichier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Par défaut Processus genant un effacement de fichier
    Bonjour
    J'ai fabriqué un Explorateur avec un treeView et une ListView, qui affiche des
    photos. Quand je sélectionne une photo pour l'effacer du disque dur, je reçois un message d'erreur me disant que le fichier n'est pas accessible car il est utilisé par un autre processus...? Que faire pour l'effacer par code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            private void supprimerToolStripMenuItem_Click(object sender, EventArgs e)
            {
                var index = listView1.SelectedItems[0].Index;     
                for (int i = listView1.SelectedItems.Count-1; i >= 0; i--)
                {
                    index = listView1.SelectedItems[i].Index;
          System.IO.File.Delete(Chemin_Reperoires+"\\"+listView1.SelectedItems[i].Name);
         }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je suppose que l'image est ouverte par ton application... Tu la charges avec Image.FromFile ? essaie plutôt avec Image.FromStream, sinon le fichier reste verrouillé jusqu'à ce que tu appelles Dispose sur l'image

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Par défaut suite
    J'ai essayé avec un stream ainsi
    f est une fichier image (*.jpg)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     FileInfo fileInfo = new FileInfo(f.FullName);
     FileStream fs = fileInfo.Create();
     imageList1.Images.Add(Image.FromStream(fs,true,true));
    Mais la listView n'affiche rien...?

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Hello,
    Citation Envoyé par mecyber25 Voir le message
    Mais la listView n'affiche rien...?
    Si on reprend ton problème, il s'agit toujours du processus en cours d'utilisation??
    Si oui dans ce cas là ajoute ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fs.Close();
    //fileInfo.delete();
    Tout est correctement fermé maintenant et ton fichier relaché

    Si cela concerne seulement l'affichage, tu peux allez faire un tour par ici : http://www.developpez.net/forums/d98...ages-listview/

    Edit: Je ne pense que delete() soit voulu

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par mecyber25 Voir le message
    J'ai essayé avec un stream ainsi
    f est une fichier image (*.jpg)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     FileInfo fileInfo = new FileInfo(f.FullName);
     FileStream fs = fileInfo.Create();
     imageList1.Images.Add(Image.FromStream(fs,true,true));
    Mais la listView n'affiche rien...?
    FileInfo.Create, comme le nom l'indique, c'est pour créer un fichier, pas pour ouvrir un fichier existant... Utilise plutôt File.OpenRead. D'autre part, comme indiqué par FrameBreak, il faut fermer le fichier une fois que l'image est chargée, sinon le problème est le même qu'avant. Le plus simple est de le faire avec un bloc using pour être sûr de ne pas laisser le fichier ouvert en cas d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (var fs = File.OpenRead(f.FullName))
    {
        imageList1.Images.Add(Image.FromStream(fs,true,true));
    }

Discussions similaires

  1. Effacer un fichier
    Par Mr Hyde dans le forum Général Python
    Réponses: 6
    Dernier message: 19/11/2007, 22h49
  2. effacer un fichier en lecture seule
    Par balha dans le forum C++
    Réponses: 5
    Dernier message: 15/12/2005, 16h57
  3. Réponses: 11
    Dernier message: 21/11/2005, 16h08
  4. Impossible d'effacer un fichier
    Par MiJack dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 14/11/2005, 10h09
  5. [API WIN 32]effacer un fichier
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 30/01/2004, 13h51

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