Automatisch inladen bestanden

Status
Niet open voor verdere reacties.
Je hoeft daar niets te plaatsen. Het zorg alleen dat het programma niet crasht.

Dat de box leegblijft ligt denk ik aan het feit dat je over heel je computer zoekt, dat duurt nogal lang.
 
Gevonden op internet, deze functie:

PHP:
    Public Function Bestanden(ByVal initial As String) As List(Of String)
        Dim result As New List(Of String)
        Dim stack As New Stack(Of String)
        stack.Push(initial)
        Do While (stack.Count > 0)
            Dim dir As String = stack.Pop
            Try
                result.AddRange(IO.Directory.GetFiles(dir, "*.mp3"))
                For Each directoryName As String In IO.Directory.GetDirectories(dir)
                    stack.Push(directoryName)
                Next
            Catch
            End Try
        Loop
        Return result
    End Function

Aanroepen gaat zo:

PHP:
        Dim list As List(Of String) = Bestanden("C:\")
        For Each path In list
            ListBox1.Items.Add(path)
        Next

Let op; kan lang duren!

Meer info: http://www.dotnetperls.com/recursive-file-directory-vbnet



En JoZ1;

Code:
For Each mp3 As String In IO.Directory.GetFiles("C:\", "*.mp3", IO.SearchOption.AllDirectories)
Try
ListBox1.Items.Add(mp3)
Catch ex As Exception
'Wat moet er gebeuren als het fout gaat?
End Try
Next

Misschien het Try-Catch Blok in het For-Each Statement zetten? Dan kijkt-ie voor elk item afzonderlijk of er geen fouten ontstaan.

Als ik nu even goed kijk, de for-each-loop gaat helemaal niks doen. Je vangt het toevoegen van de variabele mp3 af, terwijl deze nooit fout zal gaan. Hij zal meteen crashen op de for-loop, omdat je deze niet goed afvangt.
 
Laatst bewerkt:
@CaptainBri:

Ik gebruik geen 'For-Loop'. Bedoel je 'For-Each' ?

Bij mij werkte het prima toen ik het testte op 'My Music'.
 
Sorry, inderdaad de For-Each loop. Probeer het je methode voor de grap eens op de C:\ schijf.
Zelfs met volle rechten kom je niet in sommige mappen ;)
 
Ik zie al wat je bedoelde. Mijn code crasht inderdaad.

Maar ja, hoe dan af te vangen? Hoe moet de code weer verder gaan als er een fout is opgetreden? Werkt dat met jouw: On Error Resume Next ?
 
Erg bedabkt want het werkt. Maar je hebt inderdaad gelijk het duurt wel lang het zoeken. Misschien dat ik enkele directory's bijv. Windows zou kunnen uitsluiten van het zoeken om zodoende het zoeken te verkorten. Mocht iemand daaromtrent een idee hebben dan hou ik mij erg aanbevolen.

Allemaal heel erg bedankt voor alle reacties.

Groet
 
Je zou alleen in C:\Users\ kunnen zoeken. Dan kijk je alleen in de documenten van de gebruikers en niet in de systeemmappen.
 
Zoiets misschien?

PHP:
Public Function Bestanden(ByVal initial As String) As List(Of String)
        Dim result As New List(Of String)
        Dim stack As New Stack(Of String)
        stack.Push(initial)
        Do While (stack.Count > 0)
            Dim dir As String = stack.Pop
If Not dir.Contains("C:\Windows") Then
            Try
                result.AddRange(IO.Directory.GetFiles(dir, "*.mp3"))
                For Each directoryName As String In IO.Directory.GetDirectories(dir)
                    stack.Push(directoryName)
                Next
            Catch
            End Try
End If
        Loop
        Return result
    End Function

@JoZ1, heb vaak gezien dat muziek ook in de C: root en/of submappen word opgeslagen ;)
 
@CaptainBri: Oh, vreemde opslagplaats :p. Ik dacht dat 'My Music' daarvoor was bedacht.

@bonnowagt: Misschien kun je de gebruiker directories laten opgeven?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan