Bonjour à tous,
En suivant les conseils avisés de vb95 (que je salue) d'utiliser la classe Directory, j'obtiens:
Option Strict On
Option Explicit On
Imports System.IO
Public Class ListeRepertoire
Dim RepertoireInitial As String = CStr(Environment.SpecialFolder.MyDocuments)
Dim myFileList As String = Environment.GetFolderPath(CType(RepertoireInitial, Environment.SpecialFolder)) & "\ListeRepertoire.txt"
Dim myArrayList As New ArrayList()
Public Shared Sub Main()
Application.Run(New ListeRepertoire())
End Sub
Sub ListeArborescenceDossier(ByVal RepertoireActuel As String)
For Each Repertoire As String In Directory.GetDirectories(RepertoireActuel)
myArrayList.Add(Repertoire)
ListeArborescenceDossier(Repertoire)
Next
End Sub
Sub EcrireFichier()
Dim sw As New StreamWriter(myFileList)
sw.WriteLine(String.Join(Environment.NewLine, (DirectCast(myArrayList.ToArray(GetType(String)), String()))))
sw.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each Repertoire As String In Directory.GetDirectories(Environment.GetFolderPath(CType(RepertoireInitial, Environment.SpecialFolder)))
myArrayList.Add(Repertoire)
Try
ListeArborescenceDossier(Repertoire)
Catch ex As Exception
Continue For
End Try
Next
EcrireFichier()
MessageBox.Show("fichier " & myFileList & " créé")
End Sub
End Class
Code à adapter car j'initialise la variable RepertoireInitial avec le répertoire "Mes Documents". J'ai utilisé un Try ... Catch pour éviter les erreurs dues aux dossiers protégés.
jean-marc