Recherche récursive... Fonctionne, mais pas sur certain dossiers / fichiers [Résolu]

Signaler
Messages postés
3181
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
25 octobre 2020
-
Messages postés
3181
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
25 octobre 2020
-
Bonjour à tous.


Gros débutant que je suis, je cherche à apprendre en autodidacte le VB.Net.

Habituellement, je "scripte" en AutoIt...


J'ai donc décidé de faire la base des bases : une simple recherche récursive.

Ce script fonctionne (il recherche sur le bureau) :
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click

        'Dim NF = TextBox1.Text
        'Dim CT = TextBox2.Text
        'Dim DS = TextBox3.Text


        Dim cheminBUR = "C:\Users\tomce\Desktop"
        Dim CheminRDD = "C:\"

        For Each file As String In Directory.GetFiles(cheminBUR, "*.txt", SearchOption.AllDirectories)
            Console.WriteLine(file)
        Next

        Console.WriteLine("FIN")

    End Sub


J'ai bien la dite liste dans la console.

Ce script ne fonctionne pas :
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click

        'Dim NF = TextBox1.Text
        'Dim CT = TextBox2.Text
        'Dim DS = TextBox3.Text


        Dim cheminBUR = "C:\Users\tomce\Desktop"
        Dim CheminRDD = "C:\"

        For Each file As String In Directory.GetFiles(cheminRDD, "*.txt", SearchOption.AllDirectories)
            Console.WriteLine(file)
        Next

        Console.WriteLine("FIN")

    End Sub


J'ai comme erreur : exception non gérée.

ystem.UnauthorizedAccessException : 'L'accès au chemin d'accès 'C:\Documents and Settings' est refusé.'
-> https://i.imgur.com/vOvTYbw.png

J'ai donc décidé d'utiliser Catch .... Try

Plus d'erreur, mais une fois l'erreur trouvée, il s'arrête.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click



        'Dim NF = TextBox1.Text
        'Dim CT = TextBox2.Text
        'Dim DS = TextBox3.Text


        ' premier




        Dim cheminBUR = "C:\Users\tomce\Desktop"
        Dim CheminRDD = "C:\"

        Try
            For Each file As String In Directory.GetFiles(cheminBUR, "*.txt", SearchOption.AllDirectories)
                Console.WriteLine(file)
            Next

        Catch uax As UnauthorizedAccessException

        End Try



        Console.WriteLine("FIN")

    End Sub



Pouvez-vous m'aider à finaliser la chose ?

merci.


++


2 réponses

Messages postés
14933
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 octobre 2020
447
Re bonjour,

là pour le coup, c'est pas ce que j'appellerais la base de la base, mais bon.
Il faut que tu gères toi même la récursion.

Le sujet a été maintes fois traité sur la toile, certaines solutions sont plus abouties que d'autres
https://lite.qwant.com/?q=UnauthorizedAccessException+getfiles&client=opensearch

Si tu as lu l'article que j'ai écrit sur le passage de VB à VB.net, tu sais que VB.Net c'est du C#, donc toute solution en C# est applicable https://lite.qwant.com/?q=c%23+to+vb&client=opensearch
Messages postés
3181
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
25 octobre 2020

Bonjour.

Je passe en résolu.

Non pas parce que résolu, mais que ça devient un poil compliqué....

Petite parenthèse : désolée de la réponse tardive, mais avec le boulot, arffff ^^

Bref, j'essayais d'apprendre la recherche récursive. En aucun cas de créer un outil qui l'a déjà été, en largement mieux (Agent Ransack reste mon préféré).


Merci encore pour l'aide apportée.


++