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 :

Gestion des erreurs avec l'utilisation de IO.Directory.GetDirectories()


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2015
    Messages : 35
    Par défaut Gestion des erreurs avec l'utilisation de IO.Directory.GetDirectories()
    Bonjour,

    Je cherche un moyen d'éviter que la fonction IO.Directory.GetDirectories(nom_répertoire,"*",SearchOption.AllDirectories) ne retourne rien si une erreur est rencontrée. Pour être plus concret, je voudrais que les exceptions UnauthorizedAccessException ne soit pas considérés et que la méthode me retourne tous les dossiers sans celui-ci, et si possible, en me l'indiquant, car à l'heure actuelle, cela génère l'erreur UnauthorizedAccessException et je n'ai pas une liste des dossiers qui n'ont pas posés problème, ni le chemin du dossier qui a posé problème.

    Je n'arrive à contourner le problème qu'en passant en administrateur ou qu'en ajoutant le droit PathDiscovery, mais cela doit aussi être fait en mode administrateur. N'y a-t-il pas un moyen de récupérer le maximum de dossiers possibles, tous niveaux confondus (tous les répertoires/dossiers enfants) sans passer en mode administrateur afin d'être sûr d'avoir les permissions nécessaires ?

    Merci par avance de l'attention que vous porterez à mon message et à vos potentiels réponses qui pourraient certainement me permettre de trouver une solution décente à ce problème. Je profite de cette question pour vous souhaiter une bonne année 2016.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    Hello !

    Cette erreur étant une erreur liée à la sécurité, tu ne pourras pas la contourner sans la gérer.
    Je viens de coder cet exemple en VB.NET qui devrait te permettre de t'en sortir.
    La méthode GetAllDirectories() est une méthode récursive, elle s'appelle elle-même en gérant les erreurs DirectoryNotFoundException et UnauthorizedAccessException :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Imports System.IO
    
    Module Module1
    
        Sub main()
    
            Dim dir As New DirectoryInfo(<TON REPERTOIRE DE DEPART>)
            Dim directories As New List(Of DirectoryInfo)
            Dim na_directories As New List(Of DirectoryInfo)
    
            GetAllDirectories(dir, "*.*", directories, na_directories)
    
            For Each sdir As DirectoryInfo In directories
                Console.WriteLine(sdir.FullName)
            Next
    
            Console.WriteLine("***************************************")
    
            For Each sdir As DirectoryInfo In na_directories
                Console.WriteLine(sdir.FullName)
            Next
    
            Console.ReadLine()
    
        End Sub
    
    
        Public Sub GetAllDirectories(ByVal dir As DirectoryInfo, ByVal pattern As String, ByVal directories As List(Of DirectoryInfo), ByVal nonAccessibleDirectories As List(Of DirectoryInfo))
    
            Try
                directories.Add(dir)
                For Each sdir As DirectoryInfo In dir.GetDirectories(pattern, SearchOption.TopDirectoryOnly)
                    directories.Add(sdir)
                    GetAllDirectories(sdir, pattern, directories, nonAccessibleDirectories)
                Next
            Catch ex As DirectoryNotFoundException
                nonAccessibleDirectories.Add(dir)
            Catch ex As UnauthorizedAccessException
                nonAccessibleDirectories.Add(dir)
            End Try
    
    
    
        End Sub
    
       
    End Module

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2015
    Messages : 35
    Par défaut
    Je n'avais pas pensé à la récursivité, merci beaucoup pour votre aide, le sujet est .

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

Discussions similaires

  1. Gestion des erreur avec aspSmartUpload
    Par zooffy dans le forum ASP
    Réponses: 2
    Dernier message: 07/12/2007, 09h39
  2. gestion des erreurs avec fichier .properties
    Par _momo dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/08/2007, 14h05
  3. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  4. Gestion des erreurs avec setjump/longjump
    Par gege2061 dans le forum C
    Réponses: 1
    Dernier message: 05/02/2006, 15h51

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