2013-04-14 6 views
0

J'écris une fonction pour vérifier plusieurs extensions de fichier dans un dossier, puis renvoyer les noms de fichiers correspondants, mais j'ai un problème pour renvoyer les résultats.Comment ajouter un tableau à un autre?

La fonction 'fonctionne', mais évidemment chaque fois qu'elle boucle, elle réattribue les résultats de Directory.GetFiles() à Files, au lieu de les ajouter. Quelqu'un peut-il me dire comment faire cela?

Et au cas où quelqu'un voudrait le savoir, je le fais parce que, pour autant que je sache, il n'y a pas de manière intégrée de saisir pour plusieurs motifs avec Directory.GetFiles(). Si c'est faux, corrigez-moi s'il vous plaît. Merci.

Private Function GetFiles(Path As String, SearchPattern As String) 

    Dim SearchPatterns() As String = SearchPattern.Split("|") ' The patterns to search 
    Dim Files() As String = Nothing ' The files to return to the user 

    For Each Pattern In SearchPatterns 

     Files = Directory.GetFiles(Path, Pattern) 
     Array.Sort(Files) 

    Next 

    Return Files 

End Function 

Répondre

2

Utilisez la classe List(Of T) et List(Of T).AddRange méthode à la place:

Private Function GetFiles(Path As String, SearchPattern As String) 

    Dim SearchPatterns() As String = SearchPattern.Split("|") ' The patterns to search 
    Dim Files As New List(Of String) 

    For Each Pattern In SearchPatterns 
     Files.AddRange(Directory.GetFiles(Path, Pattern)) 
    Next 

    Return Files.OrderBy((Function(f) f)).ToArray() 
End Function 
+0

Aussi, je recommanderais le tri qu'une seule fois, après la boucle 'Pour Each'. Array.Sort ne fonctionne pas sur la liste :) – Thorarin

+0

@Thorarin Bien repéré! Mise à jour ma réponse – MarcinJuraszek

+0

Merci beaucoup, cela semble faire le travail :) –

Questions connexes