2014-07-11 69 views
0

這裏是我的代碼:Visual Basic中2010 - 無法列出目錄,而不顯示路徑

Sub DataLoad() 
    Dim DirList As New ArrayList 
    GetDirectories("C:\Surf\Oversigt\", DirList) 


    For Each item In DirList 
     ListBox4.Items.Add(item) 
    Next 


End Sub 



Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList) 
    Dim Dirs() As String = Directory.GetDirectories(StartPath) 
    DirectoryList.AddRange(Dirs) 

    For Each Dir As String In Dirs 
     GetDirectories(Dir, DirectoryList) 
    Next 
End Sub 

我只想顯示listbox4的目錄,而不是目錄的完整路徑名。現在,它會顯示這樣的事情:

C:\衝浪\ Oversigt \文件夾等

請幫

回答

1

你可以改變線路

DirectoryList.AddRange(Dirs) 

這一行

DirectoryList.AddRange(Dirs.Select(Function (x) Path.GetFileName(x)).ToArray()) 

這將以不直觀的方式使用Path.GetFileName,但如果您調用GetFileN ame傳入一個完整的路徑名,獲得最後一個文件夾名稱。

但是我對你的代碼有疑問。此代碼是遞歸的,剝離完整路徑,您如何識別具有相同名稱但位於不同子文件夾的兩個文件夾?

例如,假設你有一個

C:\Surf\Oversigt\MyFolder 
C:\Surf\Oversigt\temp\MyFolder 

你將在列表框中結束了

MyFolder 
MyFolder 
0

Dim Dirs() As String = Directory.GetDirectories(StartPath) 

後只需更換線

DirectoryList.AddRange(Dirs) 

For Each Dir As String In Dirs 
    DirectoryList.Add(Dir.Substring(Dir.LastIndexOf("\") + 1)) 
Next