none
Supprimer Fichier avec Progressbar RRS feed

  • Question

  • Bonjour,

    J'ai chercher sur internet et je n'ai trouver que des codes pour supprimer les fichier mais sans progressbar et je voudrai faire en sorte que quand on clique sur un bouton cela active une progressbar qui augmente au fur et a mesure que les fichier se supprime

    NB: J’utilise ce code pour la suppression:

    RmDir(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\Test")

    Merci d'avance


    vendredi 14 février 2014 02:40

Réponses

  • Merci beaucoup, j'adapte ce code a mon bouton "Delete" pour supprimer le dossier "Test" et tous son contenue

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim Repertoire As String = (Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\Test")
                    Dim c As Integer = 1
                    If System.IO.Directory.Exists(Repertoire) Then
                        Dim liste() As String = System.IO.Directory.GetFiles(Repertoire)
                        ProgressBar1.Minimum = 1
                        ProgressBar1.Maximum = liste.Length
    
                        For Each files As String In liste
                            ProgressBar1.Value = c
                            Label1.Text = files
                            c = c + 1
                            System.IO.File.Delete(files)
                            ProgressBar1.PerformStep()
                        Next
                        System.IO.Directory.Delete(Repertoire, True)
                    End If
        End Sub
    End Class

    Mais mon dernier soucis c'est comment dois-je faire pour pouvoir supprimer un autre dossier avec chemin différent exemple "Test" qui se trouve dans "ProgramFiles"?

    Merci d'avance...

    • Modifié HICHEM TIGS vendredi 14 février 2014 17:54
    • Marqué comme réponse HICHEM TIGS dimanche 16 février 2014 17:38
    vendredi 14 février 2014 15:51
  • Bonjour,

    Il n'est vraiment pas utile de faire une progressbar pour faire la suppression des dossier que vous voulez faire

    La suppression est très rapide même avec plusieurs Giga

    La progressbar pourrais être utile si vous avez plusieurs centaine de dossier a supprimer

    Pour faire la suppression de plusieurs dossiers dans des chemins différent il faudra faire la précision des dossiers, exemple :

    System.IO.Directory.Delete("C:\VotreChemin1\VotreDossier1", True)
    
    System.IO.Directory.Delete("C:\VotreChemin2\VotreDossier2", True)
    
    System.IO.Directory.Delete("C:\VotreChemin3\VotreDossier3", True)
    
    ...


    Cordialement,

    • Marqué comme réponse TroxsaEditor dimanche 16 février 2014 17:44
    samedi 15 février 2014 11:33
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    À tester mais voici quelque chose qui pourrait aider :

    Dim Repertoire As String = "C:\NomDuDossier"
    Dim c As Integer = 1    
        If System.IO.Directory.Exists(Repertoire) Then
            Dim liste() As String = System.IO.Directory.GetFiles(Repertoire)
            progressBar1.Minimum = 1
            ProgressBar1.Maximum = liste.Length
                
            For Each files As String In liste
                ProgressBar1.Value = c
                Label1.Text = files
                c = c + 1
                System.IO.File.Delete(files)
                ProgressBar1.PerformStep()
            Next
            System.IO.Directory.Delete(Repertoire)
        End If


    Jacques
    Si la réponse vous satisfait, n'oubliez pas de la proposer comme réponse. Merci

    vendredi 14 février 2014 03:25
  • Bonjour et merci pour votre réponse, je viens juste de tester et j'ai rencontrer un petit soucis:

    Par exemple si je supprimer le dossier "Test" qui contient un fichier "1.txt" et "2.txt" ca fonctionne nikel, sinon si se dernier contient un autre dossier exemple "test2" dedans j'arrive a supprimer les fichiers "1.txt" et "2.txt" et lors de la suppression du "test2" j'obtient un message d'erreur

    Sinon une deuxième demande svp: 

    1/ Comment devient votre code si je dois un multi dossier des chemins différent? (Bureau, ProgramFiles, ProgramData, etc...)

    2/ A la fin de la suppression je voudrais avoir un msgbox 


    NB: Voila le bout de code que j'ai tester avec:

    Dim Repertoire As String = (Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\KONAMI\Pro Evolution Soccer 2014\download2\download")
            Dim c As Integer = 1
            If System.IO.Directory.Exists(Repertoire) Then
                Dim liste() As String = System.IO.Directory.GetFiles(Repertoire)
                ProgressBar1.Minimum = 1
                ProgressBar1.Maximum = liste.Length
    
                For Each files As String In liste
                    ProgressBar1.Value = c
                    Label1.Text = files
                    c = c + 1
                    System.IO.File.Delete(files)
                    ProgressBar1.PerformStep()
                Next
                System.IO.Directory.Delete(Repertoire)
            End If

    Merci

    vendredi 14 février 2014 07:01
  • Bonjour,

    Si vous voulez faire la suppression d'un arborescence de dossier cela n'est pas utile de faire une progressbar sauf si vos dossier se trouve dans des chemin différent a celui du dossier de depart par exemple : C\temps\toto et C:\temp\titi

    Si tous les dossiers se trouve dans le même dossier il suffira de de faire 

    System.IO.Directory.Delete(Repertoire, True)

    Si vous voulez faire la suppression des fichiers se trouvant dans toute l'arborescence du dossier il faudra faire :

    Dim Repertoire As String = ("C:\temp\test")
    
            If System.IO.Directory.Exists(Repertoire) Then
                Dim liste As List(Of String) = System.IO.Directory.GetFiles(Repertoire, "*.*", IO.SearchOption.AllDirectories).ToList
                ProgressBar1.Minimum = 1
                ProgressBar1.Maximum = liste.Count
    
                For i = 0 To liste.Count
                    ProgressBar1.Value = i
                    Label1.Text = liste(i)
                    System.IO.File.Delete(liste(i))
                Next


    Cordialement,

    • Proposé comme réponse Aurel Bera vendredi 14 février 2014 09:31
    vendredi 14 février 2014 08:16
    Auteur de réponse
  • J'attire votre attention que pour faire une progressbar il faudra soit passer par une task (Await, et Async) ou un Thread avec des Delegates, ou encore un Backgroundworker.

    Avec le code ci-dessus vous constaterez que la form ce fixe, vous ne pouvez pas la bouger ou même voir l'avancement de la progressbar. pour ne pas avoir l’effet de fixation vos devez passer par choix que je vous ai proposé plus haut.

    A bientot 


    Cordialement,


    • Proposé comme réponse Aurel Bera vendredi 14 février 2014 09:31
    • Modifié TroxsaEditor vendredi 14 février 2014 10:52 corrige
    vendredi 14 février 2014 08:48
    Auteur de réponse
  • Merci beaucoup, j'adapte ce code a mon bouton "Delete" pour supprimer le dossier "Test" et tous son contenue

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim Repertoire As String = (Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\Test")
                    Dim c As Integer = 1
                    If System.IO.Directory.Exists(Repertoire) Then
                        Dim liste() As String = System.IO.Directory.GetFiles(Repertoire)
                        ProgressBar1.Minimum = 1
                        ProgressBar1.Maximum = liste.Length
    
                        For Each files As String In liste
                            ProgressBar1.Value = c
                            Label1.Text = files
                            c = c + 1
                            System.IO.File.Delete(files)
                            ProgressBar1.PerformStep()
                        Next
                        System.IO.Directory.Delete(Repertoire, True)
                    End If
        End Sub
    End Class

    Mais mon dernier soucis c'est comment dois-je faire pour pouvoir supprimer un autre dossier avec chemin différent exemple "Test" qui se trouve dans "ProgramFiles"?

    Merci d'avance...

    • Modifié HICHEM TIGS vendredi 14 février 2014 17:54
    • Marqué comme réponse HICHEM TIGS dimanche 16 février 2014 17:38
    vendredi 14 février 2014 15:51
  • Please help
    vendredi 14 février 2014 22:03
  • Bonjour,

    Il n'est vraiment pas utile de faire une progressbar pour faire la suppression des dossier que vous voulez faire

    La suppression est très rapide même avec plusieurs Giga

    La progressbar pourrais être utile si vous avez plusieurs centaine de dossier a supprimer

    Pour faire la suppression de plusieurs dossiers dans des chemins différent il faudra faire la précision des dossiers, exemple :

    System.IO.Directory.Delete("C:\VotreChemin1\VotreDossier1", True)
    
    System.IO.Directory.Delete("C:\VotreChemin2\VotreDossier2", True)
    
    System.IO.Directory.Delete("C:\VotreChemin3\VotreDossier3", True)
    
    ...


    Cordialement,

    • Marqué comme réponse TroxsaEditor dimanche 16 février 2014 17:44
    samedi 15 février 2014 11:33
    Auteur de réponse
  • Merci a tous je peux dire que c'est résolu.
    dimanche 16 février 2014 17:39