webForumDet fria alternativet

Sortera mappstruktur

2 svar · 583 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Hej alla glada! :)

Jag vill lista upp en hel mappstruktur, men jag skulle vilja göra den i nivå-ordning
ex:

c:\Temp\test1\
c:\Temp\test2\
c:\Temp\test1\undermapp1_1\
c:\Temp\test1\undermapp1_2\
c:\Temp\test2\undermapp2_1\
c:\Temp\test1\undermapp1_1\undermapp1_3\

alltså med alla kataloger i första nivån först, sedan alla mappar under den osv.

jag har en rekursiv funktion, men den baseras på att den hittar första katalogen och sedan kör till den inte har fler under sig, och sedan nästa katalog i root.
ex:

c:\Temp\test1\
c:\Temp\test1\undermapp1_1\
c:\Temp\test1\undermapp1_2\
c:\Temp\test1\undermapp1_1\undermapp1_3\
c:\Temp\test2\
c:\Temp\test2\undermapp2_1\

Kan man göra detta direkt i loopen, eller ska man göra en array som man sorterar på nåt sätt eller?

denna kod har jag testat med:

Dim ArrLst(500) As String
Dim i As Integer = 0

    Public Sub ProcessDir(ByVal sourceDir As String)
        If Not (sourceDir) Is Nothing Then
            Dim subdirEntries() As String = Directory.GetDirectories(sourceDir)
            For Each subdir As String In subdirEntries
                ArrLst(i) = subdir
                i += 1
                 If ((File.GetAttributes(subdir) And FileAttributes.ReparsePoint) <> FileAttributes.ReparsePoint) Then
                    ProcessDir(subdir)
                End If
            Next
        End If
GunnarDMedlem sedan juni 20014 290 inlägg
#2

Förutsätt inte att du får tillbaka katalognamn sorterade

Det enklaste är nog att slänga in allt (hela sökvägen) i en array och sedan sortera arrayen när du loopat igenom alla kataloger.

Annars måste du scanna igenom katalogen efter underkataloger, sortera katalogen, sedan gå ner i första katalogen, scanna igenom ...

ironheadMedlem sedan mars 20011 346 inlägg
#3

Hur ska man göra för att sortera arrayen i rätt ordning?
Är ju inte bara att ta

Array.Sort(Sökväg)

Fattar inte heller hur man ska få till nivån och använda:

Array.Sort(keys, ArrLst)

Behöver lite hjälp in på rätt väg...

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)