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

Windows Forms Discussion :

[C#] DirectoryInfo et rep system


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut [C#] DirectoryInfo et rep system
    Je liste tous les répertoires de ma partition et j'utilise DirectoryInfo seulement ca m'affiche les repertoires comme le RECYCLER qui est censé être caché... alors j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(rep.Attributes.CompareTo(FileAttributes.Hidden) != 0 ||
    rep.Attributes.CompareTo(FileAttribute.System) != 0)
    {
       MessageBox.Show("rep non system et non cache");
    }
    et arrivé donc au RECYCLER ca m'affiche mon messagebox ...
    je ne vois pas comment "sauté" les répertoires system et cachés vous avez une idée ?

    merci

  2. #2
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    salut,

    le problème c'est qu'il est peut-être à la fois caché et system, donc il faut faire une opération bit à bit des flags, je crois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(rep.Attributes.CompareTo(FileAttributes.Hidden) != 0 || 
    rep.Attributes.CompareTo(FileAttribute.System) != 0 ||  rep.Attributes.CompareTo(FileAttribute.System And FileAttributes.Hidden) != 0)
    { 
       MessageBox.Show("rep non system et non cache"); 
    }

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    le "And" ne marche pas. On peut le remplacer par quoi ?

    J'ai rajouté a la suite de mon if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(rep.Attributes.CompareTo(FileAttributes.Hidden) != 0 || rep.Attributes.CompareTo(FileAttributes.System) != 0 || (rep.Attributes.CompareTo(FileAttributes.System) != 0 && rep.Attributes.CompareTo(FileAttributes.Hidden) != 0))
    mais il m'afffiche toujours le repertoire de la corbeille...

  4. #4
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    désolé le And c'est en VB

    utilises l'opérateur & en C#, je crois

  5. #5
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut

    helas... meme avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(rep.Attributes.CompareTo(FileAttributes.Hidden) != 0 || rep.Attributes.CompareTo(FileAttributes.System) != 0 || (rep.Attributes.CompareTo(FileAttributes.System & FileAttributes.Hidden) != 0))
    pas meilleur...

  6. #6
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    le repertoire a peut-être d'autres attributs

    teste en créant un répertoire caché et system

    sinon ya un attribut FileAttributes.Directory, il faut peut-être le rajouter

    regarde un peu du coté de l'ensemble des flags

  7. #7
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    merci pour ton aide chman.
    @++

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    C cool G trouvé !
    Voila ma solution :
    - Pour gérer les répertoires RECYCLER et System Volume Information, il faut "caster" 22 en FileAttributes.
    Example :
    J'affiche tous les repertoires non systemes et cachés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach(DirectoryInfo rep in ListeRep)
    {
       if(rep.Attributes.CompareTo((FileAttributes)22) != 0)
       {
           <codes affichage>
       }
    }
    - Pour gérer les répertoires cachés, il faut "caster" 18 en FileAttributes.

    Voila

  9. #9
    Membre régulier Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Points : 97
    Points
    97
    Par défaut
    ça me chiffonait, vu que normalement il faut utiliser les opérateurs bit à bit

    et en cherchant, j'ai trouvé

    http://msdn.microsoft.com/library/fr...butestopic.asp

    il ne faut pas directement comparer l'attribut mais d'abord faire un "ET" bit à bit entre l'attribut et un flag et le comparer avec le flag

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (rep.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden
    exemple :

    pour ton recycler, la valeur de l'attribut est 22 donc 10110, la valuer de Hidden est 2 donc 00010 et en faisant l'opération bit à bit, on a 00010

    voilà

  10. #10
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    Oui effectivement, je viens de tester et ca me donne les mêmes résultats que ce que j'ai obtenu
    Coool.

    ben maintenant on a plus ou moins 2 facons de s'y prendre

    Encore merci pour l'info.

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

Discussions similaires

  1. DirectoryInfo => GetFiles = System.IO.__Error.WinIOError
    Par Sankasssss dans le forum VB.NET
    Réponses: 23
    Dernier message: 29/05/2013, 12h20
  2. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  3. [VB6] [Système] Icones du systray qui veulent pas partir
    Par Ctof dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/10/2002, 09h41
  4. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 08h47
  5. Préfixe REP
    Par M.Dlb dans le forum Assembleur
    Réponses: 3
    Dernier message: 02/08/2002, 10h08

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