Bonjour à tous,

j'ai un petit problème avec la fonction split de VB.net dans une procédure dans laquelle je répertorie tous les répertoires et fichiers sur un serveur FTP.

voici les lignes qui m'ennuie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Dim separateur() As String = {Environment.NewLine} ' -> retour chariot
Dim tableauListe() As String = listeBrute.Split(separateur, StringSplitOptions.RemoveEmptyEntries)
et voici la procédure complète :

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Public Function listeFichiers(ByVal serveurCible As String, ByVal identifiant As String, ByVal motDePasse As String) As Array
 
        Dim monResponseStream As Stream = Nothing
        Dim monStreamReader As StreamReader = Nothing
        Dim monResultat As Array = Nothing
        Dim Item As ListViewItem
 
        ListView1.Items.Clear()
 
        ' Instanciation de deux Uri qui vont contenir les chemins source et destination
        Dim monUriServeur As New System.Uri(serveurCible)
 
        ' Vérification de la validité de l'Uri du fichier sur le serveur FTP
        If Not (monUriServeur.Scheme = URI.UriSchemeFtp) Then
            MessageBox.Show("L'Uri du serveur FTP n'est pas valide", "Une erreur est surevnue", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            'Si Uri non valide, arrêt du listage
            Return monResultat
            Exit Function
        End If
 
        Try
 
            ' Création de la requête de récupération de la liste des fichiers
            Dim maRequeteListe As FtpWebRequest = CType(WebRequest.Create(monUriServeur), FtpWebRequest)
            maRequeteListe.Method = WebRequestMethods.Ftp.ListDirectoryDetails
 
            ' Vérification de la présence des identifiants d'un compte, si aucun alors la connexion se fait en mode anonyme
            If Not identifiant.Length = 0 Then
                Dim monCompteFtp As New NetworkCredential(identifiant, motDePasse)
                maRequeteListe.Credentials = monCompteFtp
            End If
 
            ' Récupération de la liste de fichiers
            Dim maResponseListe As FtpWebResponse = CType(maRequeteListe.GetResponse, FtpWebResponse)
 
            ' Placement du flux provenant du serveur dans un streamreader
            'monStreamReader = New StreamReader(maResponseListe.GetResponseStream, Encoding.Default)
            monStreamReader = New StreamReader(maResponseListe.GetResponseStream, True)
 
            ' Lecture du stream reader
            Dim listeBrute As String = monStreamReader.ReadToEnd
            'MsgBox(listeBrute)
 
            ' Découpage de chaque fichier dans la liste concaténée de fichiers
            Dim separateur() As String = {Environment.NewLine} ' -> retour chariot
            'Dim separateur() As String = {vbCrLf} ' -> retour chariot
            ' Découpage et récupération des noms de fichiers
            Dim tableauListe() As String = listeBrute.Split(separateur, StringSplitOptions.RemoveEmptyEntries)
            Dim listeFinale As New List(Of String)
 
            ' Lecture du tableau et tri des noms de fichiers
            Dim i As Integer = 0
            While i < tableauListe.Length
                ' Les répertoires se différencient des fichiers par le fait que la chaîne que l'on récupère commence par un "d".
                If Not tableauListe(i).StartsWith("d") Then
                    ' On place les noms de fichiers dans une liste
                    listeFinale.Add(tableauListe(i).Substring(tableauListe(i).LastIndexOf(" ") + 1))
                    Item = ListView1.Items.Add(tableauListe(i).Substring(tableauListe(i).LastIndexOf(" ") + 1))
                    ListView1.Items(ListView1.Items.IndexOf(Item)).ImageKey = "fichier.png"
                Else
                    listeFinale.Add(tableauListe(i).Substring(tableauListe(i).LastIndexOf(" ") + 1))
                    Item = ListView1.Items.Add(tableauListe(i).Substring(tableauListe(i).LastIndexOf(" ") + 1))
                    ListView1.Items(ListView1.Items.IndexOf(Item)).ImageKey = "dossier.png"
                End If
                i += 1
            End While
 
            monResultat = listeFinale.ToArray
 
            ' Gestion des exceptions
        Catch ex As UriFormatException
            MessageBox.Show(ex.Message)
 
        Catch ex As WebException
            MessageBox.Show(ex.Message)
 
        Finally
 
            ' Fermeture des différents flux utilisés
            If monResponseStream IsNot Nothing Then
                monResponseStream.Close()
            End If
 
            If monStreamReader IsNot Nothing Then
                monStreamReader.Close()
            End If
 
        End Try
 
        Return monResultat
 
    End Function
le problème est que lorsque j'ai un nom de fichier ou de répertoire avec un espace, il me split le nom et ne conserve que la deuxième partie. Par exemple pour le répertoire "Dessins Animés" il ne me garde que "Animés".

Avez-vous une idée de ce que je pourrais faire pour palier à ce problème ?
Merci beaucoup