VB.Net Condition Si aucune fichier dans un répertoire alors ??

Résolu
Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Salut à tous...


Je cherche un moyen de coder une ligne pour faire une conditon qui dit:


si le répertoire ne contient aucun fichier alors...


Je réussi maintenant à copier coller des fichier mais jene trouve pas comment
coder à savoir s'il n'y a aucun fichier dans un répertoire.


Merci de votre aide

6 réponses

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
11
Salut,


If IO.Directory.GetFiles("Dossier").Length = 0 Then
   ' Le dossier "Dossier" ne contient aucun fichier
End If


Copier-coller des fichiers tu dis? J'appelle ça copier :
IO.File.Copy("FichierSource", "FichierDestination")

Gillardg> drôle de code que tu nous à mis là...
Si tu parcours les fichiers d'un dossier, inutile de tester si le fichier existe, c'est forcément le cas.
De plus, tout ton code après le If IO.File.Exists(file) Then ... End If ne sert à rien du tout, de toute façon on y arrivera jamais... et donc ton x ne sert à rien non plus.
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Function

nofileindir(


ByVal

dirpath


As





String

)


As





Boolean








Dim

x


As





Integer

= 0



Try








For





Each

file


As





String





In





My

.Computer.FileSystem.GetFiles(dirpath, FileIO.SearchOption.SearchAllSubDirectories,


"*.*"

)



If

x = 0


Then








If

IO.File.Exists(file)


Then








Return





False








Else








Return





True








End





If








End





If


x = x + 1








Next








Catch

ex


As

ExceptionMsgBox(ex.Message)



End





Try








If

x = 0


Then








Return





True








End





If








End





Function











Bonjour chez vous !
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
crois tu cela ?

si tu testes sur un dossier qui contient des fichiers le x sert bien mais c'est tout à fait possible que mon code soit trop long j'ai fait ça à 2 doigts en mangeant du chocolat

Bonjour chez vous !
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
11
J'en suis sûr

J'ai viré le Try Catch, il peut être utile pour savoir que le chemin du dossiers est invalide, mais je pense qu'il serait nettement mieux de renvoyer l'erreur à l'appelant dans ce cas (l'appelant doit savoir que le dossier est faux)

Dim x As Integer = 0
For Each file As String In My.Computer.FileSystem.GetFiles(...)
    ' 1ère itération, X vaut forcément 0
    If x = 0 Then
        ' FileSystem.GetFiles ne renvois pas des fichiers qui n'existent pas
        If IO.File.Exists(file) Then
            Return False
        Else
            Return True
        End If
        ' On arrive jamais ici, car on retourne False (ou True)
    End If
    ' On arrive donc jamais ici non plus, x = x + 1 est donc inutile
    x = x + 1
Next
' Si on est ici, x n'a jamais été modifié, il vaut donc forcément 0
If x = 0 Then
    Return True
End If

X vaut donc 0 du début à la fin, il est donc inutile. Si on enlève le rouge et x, ça donne:
For Each file As String In My.Computer.FileSystem.GetFiles(...)
    Return False
Next
Return True

Ceci fait donc exactement la même chose que ton code
C'est une possibilité, elle n'est finalement pas tellement différente de la mienne
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
ben zut tu as raison je viens de vérifier mais comme je l'ai dit plus haut j'ai fait ça à avec 2 doigts en mangeant

c'est décidé je ne code plus en mangeant

Bonjour chez vous !
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
merci à vous 2  je vérifie cela lundi AM

bye bye